変数に型注釈を付けると、その変数の型はどうなりますか。
変数の型は注釈した型になり、右辺から推論できるもっと具体的な型の情報は使われません。形を検査しつつ具体的な型を残したいときは、型注釈ではなく satisfies を使います。
面接官が見ているのは補強。型注釈が推論を上書きすることを知っているか。
これは「const routes: Record<string, string> = { home: "/", about: "/about" } と書いたら、routes.contact のような存在しないキーでもエラーにならなくなりました。どうしますか。」への追撃質問です。
よくある答えと、面談でどう見られるか
- 推論された型ではなく、注釈した型になる。より具体的な情報は失われる
その通りです。だから、型を広げずに検査だけしたいときは satisfies を使います。 - 注釈した型と推論された型の、狭い方になる
注釈した型になります。推論された具体的な型は使われません。 - 型注釈は実行時の検査にも使われる
実行時には消えます。コンパイル時の検査だけです。 - 何も変わらない。型注釈は読む人のためのコメント
コメントではありません。変数の型そのものを決めます。
模範解答
変数の型は、注釈した型になります。右辺からもっと具体的な型が推論できても、その情報は使われません。
Record<string, string> と注釈すれば、変数は「どんな文字列のキーでも持ちうるオブジェクト」として扱われ、実際にどのキーがあるかという情報は失われます。
形を検査しつつ具体的な型を残したいときは、型注釈ではなく satisfies を使います。
対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。