Edited at

Typescriptで、Object[key]とすると出るIndex signature of object type implicitly has an 'any' type.を正しく回避する

More than 1 year has passed since last update.


はじめに

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



....だが、これは使いたくない


参考

http://stackoverflow.com/questions/32968332/how-do-i-prevent-the-error-index-signature-of-object-type-implicitly-has-an-an