但
我对TypeScript中表达式的结果感到困惑。
selectedLocaleForm: number = 0;
locales: number[] = [0, 1];
index(index: number)` {
let result = index * this.locales.length + this.selectedLocaleForm;
console.log(result);
return result;
}
当我将0传递给函数时,它会按预期返回0。当this.selectedLocaleForm
在HTML选择块中更新时,函数index
为什么返回"01"?
为什么在HTML选择块中更新this.selectedLocaleForm时函数索引返回'01'
因为this.selectedLocaleForm
是string
。
但selectedLocaleForm
是类型为number
很可能是这样。但仍然很容易强行插入字符串,例如
this.selectedLocaleForm = 'some string` as unknown as string;
在您的情况下,字符串很可能是由HTML模板注入的。
修复
将selectedLocaleForm
注释为字符串,并使用+
将其转换为数字,如下所示:
selectedLocaleForm: string = '0';
locales: number[] = [0, 1];
index(index: number)` {
let result = index * this.locales.length + (+this.selectedLocaleForm);
console.log(result);
return result;
}