Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将值插入预定义的反勾选模板文字字符串?_Javascript_Typescript - Fatal编程技术网

Javascript 将值插入预定义的反勾选模板文字字符串?

Javascript 将值插入预定义的反勾选模板文字字符串?,javascript,typescript,Javascript,Typescript,我想这样做: let template = `The first value is ${v1} and the second value is ${v2}`; template.interpolate(v1,v2); 这在Javascript/Typescript中可能吗?我发现的文档包含在创建模板字符串的同一上下文中插入到模板中的变量 正如在评论中所指出的,在Javascript中有很多方法可以做到这一点,但我特别想知道我们是否可以使用backticks创建预定义的模板?例如,重复链接使用不

我想这样做:

let template = `The first value is ${v1} and the second value is ${v2}`;
template.interpolate(v1,v2);
这在Javascript/Typescript中可能吗?我发现的文档包含在创建模板字符串的同一上下文中插入到模板中的变量

正如在评论中所指出的,在Javascript中有很多方法可以做到这一点,但我特别想知道我们是否可以使用backticks创建预定义的模板?例如,重复链接使用不支持多行模板标记的引号。

根据,您可以使用反勾号创建自己的模板,请参阅标记模板部分

根据您的示例进行调整:

function template(strings, ...keys) {
  return function(...values) {
    var dict = values[values.length - 1] || {};
    var result = [strings[0]];
    keys.forEach(function(key, i) {
      var value = Number.isInteger(key) ? values[key] : dict[key];
      result.push(value, strings[i + 1]);
    });
    return result.join('');
  };
}

var interpolate = template`The first value is ${'v1'} and 
the second value is ${'v2'}`;

interpolate({ v1: 1, v2: 2 });
其输出应为:

The first value is 1 and
the second value is 2

希望能有所帮助

谢谢@RodrigoFerreira。我阅读了“模板文字”部分和您的答案,并意识到这很简单,只需定义一个函数并传递它,而不是使用直接的模板文字:

const f = (v1:any)=> {
    return `v1 is ${v1}`;
}

console.log(f("Howdy Rodrigo!")); //logs v1 is Howdy Rodrigo!

将字符串转换为模板字符串的可能重复项在模板中不使用反勾号…我很高兴能够提供帮助