6

TypeScript での型推論の程度を理解しようとしています。次のコード例で、fooの実装がbaz.esplode有効なのはなぜですか? 私の理解では、空のメソッドはvoid.

interface bar {
    horace: number;
}

interface baz {
    esplode: (string, number) => bool;
}

interface bazzer extends bar, baz { }

var foo: bazzer = {
    horace: 12,
    esplode: function () { }
}

var x = foo.esplode('crackers', 2);

ありがとう!

4

1 に答える 1

11

見てくれてありがとう!

それは実際にはバグです。関数がコンテキストに基づいて型指定されている場合、(言語仕様のセクション 4.9 に従って) 意図した戻り値の型を表す戻り値の型の注釈が存在するかのように扱う必要があるため、エラーが発生するはずです。

この問題は既に修正済みですが、チームが追跡できるように、CodePlex サイトにバグを報告していただけますか? 今日の午後、開発ブランチに修正をプッシュできます。

再度、感謝します!

于 2012-10-02T17:26:43.953 に答える