関数の引数に型を書かないと、どうなりますか。
暗黙の any になり、関数の中が検査されなくなります。strict に含まれる noImplicitAny が有効ならエラーです。例外はコールバックで、渡す先の型から推論されます。
面接官が見ているのは推論されるものと、されないものの区別。
よくある答えと、面談でどう見られるか
- 暗黙の any になる。noImplicitAny が有効ならエラーになる
引数は呼び出し側から推論されません。strict に含まれる noImplicitAny が止めます。 - 呼び出し側で渡した値から自動で推論される
呼び出し側の値からは推論されません。例外はコールバックで、渡す先の型から推論されます(文脈的型付け)。 - unknown になる
そうなれば安全ですが、実際は any です。だから noImplicitAny で止めます。 - 戻り値と同じ型になる
戻り値とは関係ありません。
模範解答
型を書かない引数は暗黙の any になります。関数の中で何をしても検査されないので、型を付けた意味がほとんど無くなります。
これを止めるのが noImplicitAny で、strict に含まれています。有効にすると、型の分からない引数はエラーになります。
例外はコールバックです。arr.map(s => s.length) の s は、map が受け取る関数の型から推論されます。これを文脈的型付けと呼びます。
変数の初期値や関数の戻り値も推論されるので、毎回書く必要はありません。「単独で宣言した関数の引数は推論されない」と覚えておくと、どこに注釈を書けばよいかが分かります。
出典(一次資料)
対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。