objetos objeto llamar listas lista funciones clases typescript

objeto - Cómo declarar los tipos de devolución para las funciones en TypeScript



typescript function (3)

Estás en lo correcto: aquí está un ejemplo que funciona completamente: verás que var result es implícitamente una cadena porque el tipo de devolución se especifica en la función greet() . Cambie el tipo a number y recibirá advertencias.

class Greeter { greeting: string; constructor (message: string) { this.greeting = message; } greet() : string { return "Hello, " + this.greeting; } } var greeter = new Greeter("Hi"); var result = greeter.greet();

Aquí está el ejemplo numérico: verás garabatos rojos en el editor del patio de recreo si pruebas esto:

greet() : number { return "Hello, " + this.greeting; }

Revisé aquí http://go.microsoft.com/fwlink/?LinkId=267238 que es la especificación del lenguaje de TypeScript, pero no pude ver una cosa sobre cómo puedo declarar un tipo de devolución de la función. Mostré lo que esperaba en el siguiente código: greet(name:string) :string {}

class Greeter { greeting: string; constructor (message: string) { this.greeting = message; } greet() : string{ return "Hello, " + this.greeting; } }

Veo que podemos usar algo (name:string) => any pero se usan principalmente al pasar funciones de devolución de llamada:

function vote(candidate: string, callback: (result: string) => any) { // ... }


Puede leer más sobre tipos de funciones en la especificación del lenguaje en las secciones 3.5.3.5 y 3.5.5.

El compilador de TypeScript deducirá los tipos cuando sea posible, y esto se hace, no es necesario especificar tipos explícitos. por lo tanto, para el ejemplo de bienvenida, greet () devuelve un literal de cadena, que le dice al compilador que el tipo de la función es una cadena, y no es necesario especificar un tipo. así que por ejemplo en esta muestra, tengo la clase de bienvenida con un método de saludo que devuelve una cadena, y una variable que está asignada al número literal. el compilador inferirá ambos tipos y obtendrá un error si intenta asignar una cadena a un número.

class Greeter { greet() { return "Hello, "; // type infered to be string } } var x = 0; // type infered to be number // now if you try to do this, you will get an error for incompatable types x = new Greeter().greet();

Del mismo modo, esta muestra causará un error ya que el compilador, dada la información, no tiene forma de decidir el tipo, y este será un lugar donde debe tener un tipo de devolución explícita.

function foo(){ if (true) return "string"; else return 0; }

Esto, sin embargo, funcionará:

function foo() : any{ if (true) return "string"; else return 0; }


functionName() : ReturnType { ... }