我正在尝试在TypeScript中使用ES5的标记模板字面量,但似乎TypeScript对其支持不完整。以下是我的代码片段。
class TemplateLiterals {
age: number = 24;
name: 'Luke Skywalker'
private tag(strings: string[], personExp, ageExp) :string{
var str0 = strings[0]; // "that "
var str1 = strings[1]; // " is a "
var ageStr;
if (ageExp > 99) {
ageStr = 'centenarian';
} else {
ageStr = 'youngster';
}
return str0 + personExp + str1 + ageStr;
}
toString() {
return this.tag `that ${ this.name } is a ${ this.age }`;
}
}
在
toString
方法中,TypeScript向我显示了以下错误。Argument of type 'TemplateStringsArray' is not assignable to parameter of type 'string[]'.
Property 'push' is missing in type 'TemplateStringsArray'.
我不知道为什么会出现这个错误。根据 Mozilla 的文档,“标签函数的第一个参数包含字符串值的数组”。因此应该接受字符串数组。但实际期望是 TemplateStringsArray
。不确定 interface
TemplateSringsArray
是如何定义的,也不知道何时定义。目前我正在使用 TemplateStringsArray
类型来避免此错误。请问有人能解释一下发生了什么吗?谢谢。这里是playground。