3

VS 2012 Update 3 にバージョン 0.9.0.1 の typescript コンパイラがインストールされています。

カスタム イベントをディスパッチしたいのですが、lib.d.ts で宣言されたアンビエント変数が、予想されるコンストラクター シグネチャを公開していません。

私が使うとき

var myEvent = new CustomEvent("my:event:type", { detail: { some: "data"} });
window.dispatchEvent(myEvent);

彼によると、型スクリプト コンパイラは不平を言います。

var myEvent = new CustomEvent();

正しい。

Chrome 27 および Aurora 24.02 によると、「引数が欠落している」ため、後者は誤りです。

MDN には、実際には正しいが typescript 用ではないコンストラクターの署名もリストされています。

私の考えでは、既知の正しいコンストラクター署名をアンビエント変数宣言に追加することでしたが、出荷された lib.d.ts ファイルには触れません。これは技術的に可能でしょうか?正しい構文を思いつくことができませんでした。また、言語仕様には、そのような 2 つの宣言をマージする方法が記載されていませんでした。

別の方法として、lib.d.ts を編集しただけで、IDE の再起動後に署名が更新されました。それでも、サードパーティのファイルをそのような方法で改ざんしたくはありません。

最後に、カスタム イベントをディスパッチするタイプ スクリプト コードを記述するために使用できる (sh|c) 他のメカニズムはありますか?

(更新: IDE を再起動すると、lib.d.ts が正しくリロードされます。また、作成されたイベント タイプ名が修正されました)

4

3 に答える 3

1

私はこれをすべてやった:

  • ビルド時に --nolib オプションを使用する
  • lib.d.ts のローカル コピーを追加します。
  • 予想されるコンストラクター シグネチャにパッチを適用する
  • MDNの提案に従って、IE <= 11 のポリフィルを追加します
于 2013-07-10T15:21:14.950 に答える