#はじめに
Typescriptで、 Object[key]
と書くと出る
Index signature of object type implicitly has an 'any' type.
を正しく回避したい時の一つの方法
参考urlを読めば分かるのだが、検索してもなかなか見つけられなかったのでここに記す
筆者は、redux-formでチェックボックスを作る際にハマった
Compilerに型を教えてやる
interface pokemon {
PIKACHU: boolean,
RAICHU: boolean,
YADORAN: boolean
\[key: string]: boolean
}
let key: string = 'PIKACHU';
let pikachu: string = pokemon[key];
さらに、booleanではないvalueを定義すると、Compilerが怒ってくれる
Property 'PIDHION' of type 'number' is not assignable to string index type 'boolean'.
補足: \[key: string]: boolean <= 先頭の""は、不要なのだが、code-block内ではこうするしかなかった
おまけ: よく見つかる解法
コンパイラのオプションに以下を渡す
--suppressImplicitAnyIndexErrors
....だが、これは使いたくない