IT-Q

参画したプロジェクトで、any が数百か所に使われていました。どう進めますか。

一度に直さず、まず増えるのを止めます。noImplicitAny と lint で新しい any を防ぎ、API の応答や JSON.parse のように外から値が入る境界から unknown に置き換えていきます。

面接官が見ているのは一気に直そうとせず、広がりを止めてから減らす順序を言えるか。

よくある答えと、面談でどう見られるか

  • まず新しい any が増えないようにし(noImplicitAny や lint)、外から値が入る境界から順に unknown と検証に置き換える
    その順序です。増えるのを止めないと、減らしても追いつきません。効きが大きいのは外との境界です。
  • 全部の any を一度に正しい型へ書き換える
    理想ですが、数百か所を一度に直すと差分が大きすぎてレビューできず、止まります。段階を踏みます。
  • any を全部 unknown に置換する
    方向は合っていますが、機械的に置換すると数百件のエラーが一度に出ます。使う側の修正が要ります。
  • 動いているなら触らない
    動いているのは、まだ壊れた値が来ていないだけかもしれません。少なくとも増えるのは止めます。

模範解答

一度に直そうとせず、まず増えるのを止めます。noImplicitAny(strict に含まれる)で暗黙の any をエラーにし、明示的な any は lint で新しく書けないようにします。既存分は許可したまま進めます。

減らすときは、外から値が入る境界から手を付けます。API の応答、フォームの入力、localStorage、JSON.parse の結果などです。ここを unknown で受けて、実行時に形を確かめてから型を付けると、その先のコードは自然に型が付いた状態になります。

逆に、内部の関数の any を先に直しても、入口が any のままなら効果は小さいです。面談では「どこから直すか」の理由まで聞かれます。

対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。

ここからどう深掘りされるか

この問いに答えられた場合、面談は次の質問に進みます。

一部しか触れられなかった場合
any と unknown は、どう違いますか。