TypeScriptでpropertyを舐める処理が面倒くさい
TypeScript面倒くさい問題の一つ、プロパティを列挙してアクセス
https://t.co/oukdNOiVSV うーん、やっぱこれかなぁ?
— wtnabe, yet another yak shaver (@wtnabe) October 4, 2024
TypeScriptでオブジェクトの全プロパティを走査するときの注意点 | JavaScript/TypeScriptメモ
これです。
JavaScript の時は伝統的に
for (const k in obj) {
obj[k]
}
こういうコードをカジュアルに書いてしまっていたんだけど、TypeScript では
for (const k in obj) {
obj[k] // <- error !
}
怒られます。1
これは k
として取得できる key の型が string
になってしまうため2。この結果
obj[k]
として値が取得可能な key とは限らない- その結果
obj[k]
はany
になってしまう - もしこれを何かに代入すると unsafe ですよ
が起きるから。
どうせ値のチェックは自分でやるので
obj[k as keyof typeof obj]
と書きましょう。
どうせ値のチェックはするので。 するよね?