IT-Q

型の定義と、実行時の検査の定義を別々に書いていたら、片方だけ直されてずれていました。どうしますか。

どちらか一方を正にして、もう一方を導きます。TypeScript は型から検査コードを作らないので、スキーマを正とし、型はスキーマから取り出す形にすれば、構造上ずれなくなります。

面接官が見ているのは二重管理をやめ、片方からもう片方を導く設計を言えるか。

これは「API の応答に型を付けるとき、どう書きますか。」への追撃質問です。

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

  • 検査の定義(スキーマ)を正とし、型はそこから導く
    その通りです。検証ライブラリの多くは、スキーマから型を取り出す仕組みを持っています。
  • 両方を同じ人が同時に直すルールにする
    守られている間は動きますが、人の注意に頼っています。仕組みでずれないようにする方が確実です。
  • 型の定義だけにして、実行時の検査はやめる
    ずれはなくなりますが、検査の役割ごと失います。外から来る値をまた確かめなくなります。
  • 型から実行時の検査コードを TypeScript が自動で作るので、型だけ書けばよい
    TypeScript は型から実行時のコードを作りません。型は実行時には消えます。

模範解答

どちらか一方を正にして、もう一方をそこから導きます。

TypeScript の型は実行時に消えるので、型から検査コードを作ることは TypeScript 自身はしません。そのため、検査の定義(スキーマ)を正とし、型はスキーマから取り出す形にするのが一般的です。検証ライブラリの多くがこの仕組みを持っています。

こうしておけば、項目を足すときはスキーマを1か所直すだけで、型も検査も同時に変わります。片方だけ直されてずれる、ということが構造上起きなくなります。

面談では「同じ情報を2か所に書くと、いつか必ずずれる」と言えるかを見られます。

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