TypeScriptでfor (let x in obj)
ループを使用しようとしていますが、TypeScriptコンパイラがx
の型を正しく認識しません...常に型名がstring
と仮定します。TypeScriptコンパイラで変数の型が正しく検出されない
以下の例では、for
ループ外のタイプobj
が正しく検出されています。 TypeScriptコンパイラは、それをnumber
として認識します。ただし、for
ループ内のobj
は、number
である必要がある場合はstring
と認識されます。
let myObj: { [key: number]: number } = { 0: 43, 5: 23 };
let obj = myObj[0]; // let obj: number
for (let obj in myObj) {
if (obj == 1) {
//^[ts] Operator '==' cannot be applied to types 'string' and 'number'.
// TypeScript compiler thinks 'obj' is of type 'string' when used in `for in` loop.
}
}
これは私のコードに誤りがあり、この問題を回避する方法がわかりません。それは私が間違っていることか、それともTypeScriptのバグですか?
あなたのユースケースは何ですか? –