Maszynopis: Dlaczego to nie jest błąd typu?

głosy
6

Próbuję zrozumieć stopień typu wnioskowania w pracy na maszynie. W poniższym przykładzie kodu, dlaczego to foojest realizacja baz.esplodeważne? W moim rozumieniu jest to, że pusta metoda pasuje 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);

Dzięki!

Utwórz 02/10/2012 o 09:41
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
11

dzięki za przyjrzeniu!

To rzeczywiście błąd. Gdy funkcja jest kontekstowo wpisane, powinniśmy traktować go jak gdyby istnieje zwracany typ adnotacji, która reprezentuje zamierzony typ zwracany (za sekcji 4.9 specyfikacji języka), tak masz rację, że nie powinno być błędu.

Mam już poprawkę na to, ale można zgłosić błąd na stronie CodePlex więc nasz zespół może go śledzić? Mogę wcisnąć poprawkę do naszego rozwoju branży południu.

Dzięki jeszcze raz!

Odpowiedział 02/10/2012 o 18:26
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more