我正嘗試使用帶打字機的ES5的tagged template literal,但好像類型腳本沒有完全支持它。我有以下一段代碼。TypeScript:Tagged Template Literals顯示錯誤
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
。目前我正在使用TemplateSringsArray
類型來避免此錯誤。任何人都可以請解釋發生了什麼。謝謝。這是playground。
'目前我正在使用TemplateSringsArray類型來避免此錯誤.' –