型の定義と、実行時の検査の定義を別々に書いていたら、片方だけ直されてずれていました。どうしますか。
どちらか一方を正にして、もう一方を導きます。TypeScript は型から検査コードを作らないので、スキーマを正とし、型はスキーマから取り出す形にすれば、構造上ずれなくなります。
面接官が見ているのは二重管理をやめ、片方からもう片方を導く設計を言えるか。
これは「API の応答に型を付けるとき、どう書きますか。」への追撃質問です。
よくある答えと、面談でどう見られるか
- 検査の定義(スキーマ)を正とし、型はそこから導く
その通りです。検証ライブラリの多くは、スキーマから型を取り出す仕組みを持っています。 - 両方を同じ人が同時に直すルールにする
守られている間は動きますが、人の注意に頼っています。仕組みでずれないようにする方が確実です。 - 型の定義だけにして、実行時の検査はやめる
ずれはなくなりますが、検査の役割ごと失います。外から来る値をまた確かめなくなります。 - 型から実行時の検査コードを TypeScript が自動で作るので、型だけ書けばよい
TypeScript は型から実行時のコードを作りません。型は実行時には消えます。
模範解答
どちらか一方を正にして、もう一方をそこから導きます。
TypeScript の型は実行時に消えるので、型から検査コードを作ることは TypeScript 自身はしません。そのため、検査の定義(スキーマ)を正とし、型はスキーマから取り出す形にするのが一般的です。検証ライブラリの多くがこの仕組みを持っています。
こうしておけば、項目を足すときはスキーマを1か所直すだけで、型も検査も同時に変わります。片方だけ直されてずれる、ということが構造上起きなくなります。
面談では「同じ情報を2か所に書くと、いつか必ずずれる」と言えるかを見られます。
対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。