2

以下のリンクから history.js 宣言ファイルを使用しています。

History.js 宣言ファイル

ただし、「History」オブジェクトは、lib.d.ts のネイティブ History オブジェクトと競合しています。この問題を克服する方法はありますか? トリプルチェックしました。history.js 宣言ファイルへの参照を含めています。

4

2 に答える 2

3

定義ファイルを次のように変更するために、DefinitelyTypedプロジェクトにプルリクエストを送信しました。

interface HistoryAdapter {
    bind(element, event, callback);
    trigger(element, event);
    onDomLoad(callback);
}

interface History {
    enabled: bool;
    pushState(data, title, url);
    replaceState(data, title, url);
    getState();
    getHash();
    Adapter: HistoryAdapter;
    back();
    forward();
    go(X);
    log(...messages: any[]);
    debug(...messages: any[]);
}

これにより、既存のインターフェイスなどに追加のプロパティとメソッドが既存のHistoryクラス定義に適切に追加されるため、次を使用します。

var history = new History();

これで動作するはずです。DefinitelyTypedから最新の履歴定義を取得するだけです。

編集:

Githubリンクが変更されました(まだ)。ファイルは現在次の場所にあります:https ://github.com/borisyankov/DefinitelyTyped/tree/master/history

于 2013-01-04T09:36:08.713 に答える
1

HistoryStatic確かに、 DefiniteTyped によって提供されるインターフェイスにオブジェクトをキャストするだけです。

var h = new History();
h = <HistoryStatic>h;
h.getState();

独自のインターフェイスを作成するのHistoryではなく、既に提供されているインターフェイスを宣言ファイルで拡張した方がよいでしょう。lib.d.tsこれには意図があったのかもしれませんし、見落としていたのかもしれません。

于 2013-01-04T01:46:12.707 に答える