15

「組み込み」タイプの1つをどのように拡張しますか?例:アレイ?

JSでは、私は次のようなことをします

Array.prototype.shuffle = function () { ... };

TypeScriptで同等のものは何ですか?

4

1 に答える 1

19

TypeScriptでは型は「オープンエンド」なので、次のように書くことができます。

interface Array {
  shuffle: () => any; // <-- Whatever signature you want.
}

次に、タイプが拡張されて新しい関数が含まれます(そして、署名に一致する関数をそれに割り当てることができます)。

ただし、組み込み型(lib.d.ts内の型-Arrayなど)を拡張すると、パフォーマンス上の理由で内部的にキャッシュされるため、現在言語サービスで問題が発生していることに注意してください。http://typescript.codeplex.com/workitem/4で作成した回避策を実行して、VSの言語サービスでエラーなしに組み込み型を拡張します。

于 2012-10-03T04:23:54.317 に答える