TL;DR
noImplicitAnyを有効にしても、明示的なanyとサードパーティの型宣言からanyが入り込む。- コードベースの
anyの数を監視すると、anyを使う判断を見直すきっかけになり、型安全性を高めていける。
内容
any が入り込む 2 つの経路
noImplicitAny を有効にしても、次の 2 つの経路から any が入り込む。
1 つ目は、明示的な any 型である(項目43、項目44)。特に any[] や { [key: string]: any } は、要素の型が any なので、コードに入り込むと厄介である。
2 つ目は、サードパーティの型宣言である。@types の宣言ファイルに由来する any は知らないうちに入り込むので、気づきにくい。
型カバレッジを監視する
any は型安全性や開発者体験を損なうので、コードベースにある any の数を監視するとよい。たとえば type-coverage を使う。
$ npx type-coverage
(406 / 486) 83.53%
type-coverage success.--detail を付けると、any が出てくる箇所を確認できる。
$ npx type-coverage --detail
/Users/.../xxx.ts:63:13: parent
...Visual Studio Code に組み込むこともできる。監視することで、any を使った判断を見直すきっかけが生まれ、時間とともに型安全性を高められる。