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!
将字符串转换为模板字符串的可能重复项在模板中不使用反勾号…我很高兴能够提供帮助