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 を使った判断を見直すきっかけが生まれ、時間とともに型安全性を高められる。

キーワード