5

Typescript の Array オブジェクトにメソッドを追加しようとしています。SOで他のソリューションをすでに見つけましたが、どれもうまくいきません。

私のコードは次のようになります:

interface Array {
    average(): () => number;
}

Array.prototype.average = () => {
    var sum: number = 0

    for (var i = 0; i < this.length; i++)
        sum += this[i]

    if (this.length)
        return sum / this.length

    return 0
}

そして、私はエラーが発生します:The property 'average' does not exist on value of type 'Array'

4

3 に答える 3

5

Visual Studio でのみエラーが発生していますか? ビルトイン インターフェイスを拡張する際のバグにより、これほど多くのことが予想されます。これは、tsc.exe を呼び出すだけの場合に機能するはずです。

関連して、あなたのコードは少しずれています - の宣言はaverage、数値を返すのではなく、数値を返す関数を返す関数を記述しています (その行に書きたいだけですaverage(): number)。また、実装で=>代わりに使用したため、実行時function() {に間違ったthis値にバインドされます。それが役立つことを願っています!

于 2013-02-14T04:45:31.877 に答える