Tapuscrit: Pourquoi est-ce pas une erreur de type?

voix
6

Je suis en train de comprendre le degré d'inférence de type au travail dactylographiée. Dans l'exemple de code suivant, pourquoi est foode » la mise en œuvre de baz.esplodevalable? Je crois comprendre 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!

Créé 02/10/2012 à 09:41
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
11

merci pour jeter un oeil!

C'est en fait un bug. Lorsqu'une fonction est contextuellement typée, nous devons le traiter comme si une annotation de type de retour existe qui représente le type de retour prévu (par l'article 4.9 de la spécification de la langue), vous êtes tellement juste qu'il devrait y avoir une erreur.

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

Merci encore!

Créé 02/10/2012 à 18:26
source utilisateur

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