Letra de imprenta: ¿Por qué no es esto un error de tipo?

votos
6

Estoy tratando de comprender el grado de inferencia de tipos en el trabajo a máquina de escribir. En el siguiente ejemplo de código, ¿por qué es foo's ejecución de baz.esplodevalidez? Mi entendimiento es que coincide con un método vacío 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!

Publicado el 02/10/2012 a las 09:41
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
11

¡Gracias por echar un vistazo!

Eso es en realidad un error. Cuando una función se escribe contexto, hay que tratarlo como si existe un tipo de retorno anotación que representa el tipo de retorno previsto (según la sección 4.9 de la especificación del lenguaje), por lo que tienes razón en que debe haber un error.

Ya tengo una solución para esto, pero puedo informar de un problema en el sitio CodePlex que nuestro equipo pueda seguirlo? Puedo empujar la solución a nuestra sucursal de desarrollar esta tarde.

¡Gracias de nuevo!

Respondida el 02/10/2012 a las 18:26
fuente por usuario

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