1

次のプロトタイプを String クラスに追加するとします。

String.prototype.beginsWith = function (string) {
     return(this.indexOf(string) === 0);
};

beginWithlib.d.tsに追加する必要があります。そうしないと、コンパイルできません。

declare var String: {
    new (value?: any): String;
    (value?: any): string;
    prototype: String;
    fromCharCode(...codes: number[]): string;
    //Here
}

ファイルはロックされており、編集できません。

var String: any呼び出しの前に宣言するだけでリリースでき ますが、それを組み込むことはできますか?

4

1 に答える 1

6

lib.d.ts を変更する必要はなく、最初に String インターフェイスを拡張してから、拡張するオブジェクトのプロトタイプ チェーンに新しいメソッドを含めます。

例えば

interface String {
   beginsWith(text: string): bool;
}

次に、新しい機能を実装し、プロトタイプ チェーンに追加します。

String.prototype.beginsWith = function (text) {
    return this.indexOf(text) === 0;
}

これで、呼び出し元のコードで Intellisense が取得され、期待どおりに動作するようになります。

于 2013-02-04T07:53:12.677 に答える