IT-Q

window に独自のプロパティ(window.appConfig)を足したら、型エラーになりました。どう型を付けますか。

declare global の中で Window インターフェースを宣言し、プロパティを足します。宣言のマージで標準の Window に追加されます。import や export のあるファイルでは、declare global で囲む必要があります。

面接官が見ているのは宣言のマージとグローバル拡張を使えるか。

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

  • declare global で Window インターフェースにプロパティを足す(宣言のマージ)
    その通りです。interface は同じ名前で宣言すると中身が統合されます。
  • (window as any).appConfig と書く
    エラーは消えますが、使うたびに検査が外れます。型を一度宣言する方が安全です。
  • Window 型をコピーして、プロパティを足した新しい型を作る
    既存の window の型は変わりません。新しい型を使うたびに as が要ります。
  • tsconfig の strict を外す
    strict を外しても、存在しないプロパティへのアクセスはエラーのままです。

模範解答

declare global の中で Window インターフェースを宣言し、プロパティを足します。

  declare global {
    interface Window {
      appConfig: { apiUrl: string }
    }
  }

interface は、同じ名前で宣言すると中身が統合されます(宣言のマージ)。標準の Window に、自分のプロパティが足された形になります。

このファイルがモジュール(import か export を含む)であれば declare global が要ります。公式の Handbook も、モジュールの中からグローバルに宣言を足す方法として説明しています。

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

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

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