Mecanografiado:¿Por qué no es esto un error de tipo?
-
12-12-2019 - |
Pregunta
Estoy tratando de comprender el grado de inferencia de tipos que funciona en TypeScript.En el siguiente ejemplo de código, ¿por qué? foo
la implementación de baz.esplode
¿válido?Tengo entendido que un método vacío coincide 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);
¡Gracias!
Solución
¡Gracias por echar un vistazo!
En realidad, eso es un error.Cuando una función se escribe contextualmente, debemos tratarla como si existiera una anotación de tipo de retorno que represente el tipo de retorno deseado (según la sección 4.9 de la especificación del idioma), por lo que tiene razón en que debería haber un error.
Ya tengo una solución para esto, pero ¿pueden presentar un error en el sitio de CodePlex para que nuestro equipo pueda rastrearlo?Puedo enviar la solución a nuestra rama de desarrollo esta tarde.
¡Gracias de nuevo!