Typescript: Waarom is dit niet een soort fout?

stemmen
6

Ik ben op zoek naar de mate van het type gevolgtrekking aan het werk met de schrijfmachine te begrijpen. In de volgende code voorbeeld, waarom is foo's implementatie van baz.esplodegeldig? Ik heb begrepen dat een lege methode past 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);

Bedankt!

De vraag is gesteld op 02/10/2012 om 09:41
bron van user
In andere talen...                            


1 antwoorden

stemmen
11

bedankt voor het nemen van een blik!

Dat is eigenlijk een bug. Wanneer een functie contextueel wordt getypt, moeten we het te behandelen alsof er een soort terugkeer annotatie bestaat dat vertegenwoordigt de beoogde return type (per paragraaf 4.9 van de taal spec), dus heb je gelijk in, dat moet er een fout zijn.

Ik heb al een oplossing voor dit, maar kan je een bug bestand op de CodePlex site, zodat ons team het kunt volgen? Ik kan de correctie vanmiddag te duwen om ons te ontwikkelen tak.

Nogmaals bedankt!

antwoordde op 02/10/2012 om 18:26
bron van user

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