3

これが数値では機能するのに日付では機能しない理由を理解してください。

declare interface Number {
    toPreferredStringFormat(): string;
}

declare interface Date {
    toPreferredStringFormat: string;
}

(function () {
    // OK
    Number.prototype.toPreferredStringFormat = () => {
        return this.toString() + " preferred!";
    };

    // ERROR (why?!)
    Date.prototype.toPreferredStringFormat = () => {
        return this.toString() + " preferred!";
    };
})();

私はそれを正しくやっていますか?

ありがとう!

4

2 に答える 2

5

あなたの2つの宣言には微妙な違いがあります...

toPreferredStringFormat(): string; // has ()
toPreferredStringFormat: string; // doesn't have ()

これら 2 つのうちの 2 番目は、プロパティが文字列であると述べており、1 番目は、それが関数であると述べています。

これは完全に機能する例です。関数が文字列を返すことを期待しているという長い方法を使用しています。これにより、ブラケットの存在だけでなく、それも機能します。

declare interface Number {
    toPreferredStringFormat: () => string;
}

declare interface Date {
    toPreferredStringFormat: () => string;
}

(function () {
    // OK
    Number.prototype.toPreferredStringFormat = () => {
        return this.toString() + " preferred!";
    };

    // ERROR (why?!)
    Date.prototype.toPreferredStringFormat = () => {
        return this.toString() + " preferred!";
    };
})();
于 2013-05-01T08:10:36.247 に答える