为什么指定类型(Number)的变量表达式在Typescript中转换为字符串



我对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.selectedLocaleFormstring

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;
}

最新更新