as unknown as User と2段で書かれている箇所がありました。なぜこう書いたのだと思いますか。
直接の as がエラーになったので、unknown を経由して通した跡です。TypeScript が「これは間違いでは」と止めたのを黙らせているので、本当に正しいかを確かめ直す必要があります。
面接官が見ているのは2段の as が「どんな型にも変えられる抜け道」だと分かるか。
これは「コードに as が大量に使われていました。何が問題ですか。」への追撃質問です。
よくある答えと、面談でどう見られるか
- 型が離れすぎていて直接の as がエラーになったので、unknown を経由して無理やり通した
その通りです。TypeScript が「これは間違いでは」と止めたのを、回り道で黙らせています。 - unknown を経由すると、実行時に型が確かめられる
確かめられません。as は何段重ねても実行時には何もしません。 - TypeScript の書き方の決まりで、as は2段で書くもの
そういう決まりはありません。1段で通らないから2段にしています。 - より安全な書き方にするため
逆です。TypeScript が止めた変換を無理やり通しているので、もっとも危ない書き方の一つです。
模範解答
直接の as がエラーになったので、unknown を経由して通したのだと考えます。
TypeScript は、明らかに無理な as(たとえば文字列を数値に)を止めます。公式も、as はより具体的か、より一般的な型への変換しか許さないと説明しています。ところが unknown はあらゆる型とつながっているので、一度 unknown にしてから目的の型にすれば、どんな型にも変えられます。
つまり as unknown as T は、TypeScript が「これは間違いでは」と止めたのを黙らせた跡です。見つけたら、なぜ型が合わなかったのかを確かめます。多くの場合、型の定義が実態とずれているか、変換の処理が抜けています。
出典(一次資料)
対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。