Question

J'essaie de comprendre le degré de l'inférence de type, au travail à la Machine.Dans l'exemple de code suivant, pourquoi foo's la mise en œuvre de baz.esplode est-il valide?Ma compréhension est qu'une méthode vide correspond à 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);

Merci!

Était-ce utile?

La solution

merci de prendre un coup d'oeil!

C'est effectivement un bug.Lorsqu'une fonction est contextuellement tapé, nous devrions le traiter comme si un type de retour d'annotation existe que représente le retour prévu de type (conformément à l'article 4.9 de la langue spec), de sorte que vous êtes en droit qu'il doit y avoir une erreur.

J'ai déjà un correctif pour cela, mais pouvez-vous produire un bug sur le site de CodePlex afin que notre équipe puisse le suivre?Je peux pousser le correctif pour développer notre succursale de de cet après-midi.

Merci encore!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top