1. ホーム
  2. typescript

[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?

2022-03-17 17:33:57

質問

オブジェクトにグローバルな名前空間を設定するには、明示的に window .

window.MyNamespace = window.MyNamespace || {};

TypeScriptの下線 MyNamespace と文句を言う。

プロパティ 'MyNamespace' はタイプ 'window' の値には存在しません。 any"です。

を宣言することで、このコードを動作させることができます。 MyNamespace をアンビエント変数として使用し window を明示する必要がありますが、私はそれをしたくありません。

declare var MyNamespace: any;

MyNamespace = MyNamespace || {};

を維持するにはどうすればよいのでしょうか? window を追加して、TypeScriptを喜ばせることができますか?

余談ですが、TypeScriptが文句を言うのは特におかしいと思います。 window は、型 any は、間違いなく何でも含むことができます。

どのように解決するのですか?

でその答えを見つけたところです。 Stack Overflowの別の質問の回答 .

declare global {
    interface Window { MyNamespace: any; }
}

window.MyNamespace = window.MyNamespace || {};

基本的には、既存の window インターフェイスに、新しいプロパティについて知らせることができます。