TypeScript
reactjs
redux
redux-form

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