IT-Q

Node.js で型を取り除いて直接動かしたら、import { User } from "./types.ts" の行で「User という export が無い」と落ちました。User は interface です。どう直しますか。

Node.js の型除去は、type の付いていない import を値の import として残すので、interface を import すると実行時に落ちます。import type と書き、verbatimModuleSyntax で書き漏れを防ぎます。

面接官が見ているのは型だけの import を import type で示す必要があることを知っているか。

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

  • import type { User } と書く。tsconfig で verbatimModuleSyntax を有効にして、書き漏れを型チェックで見つける
    その通りです。Node.js の公式ドキュメントも、type を付けないと値の import として扱われると説明しています。
  • User を interface から class に変える
    動くようにはなりますが、型のために実行時のコードを増やすことになります。
  • tsc でビルドしてから動かす
    tsc は型だけの import を消すので動きますが、型を取り除いて動かす方針の解決にはなっていません。
  • Node.js が tsconfig の paths を読めていないので、設定を足す
    パスの問題ではありません。Node.js は tsconfig を読みません。

模範解答

import type { User } from "./types.ts" と書きます。

Node.js の型の除去は、ファイルを1つずつ見て型の部分を取り除くだけで、User が型なのか値なのかを、別のファイルまで見て判断しません。type が付いていない import は、値の import として残され、実行時には types.ts に User という export が無いので落ちます。Node.js の公式ドキュメントも、この例を挙げています。

書き漏れを防ぐには、tsconfig で verbatimModuleSyntax を有効にします。type の付いていない import はそのまま残る、という同じ規則で型チェックするので、型だけを値として import している箇所がエラーになります。

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

ここからどう深掘りされるか

この問いに答えられた場合、面談は次の質問に進みます。