Funciones tipadas
Una función se tipa en tres lugares: sus parámetros, su retorno y —cuando la pasas como valor— su firma completa.
function greet(name: string) {
console.log("Hello, " + name.toUpperCase() + "!!");
}
function getFavoriteNumber(): number {
return 26;
}
El retorno casi siempre se puede inferir. Anotarlo igual tiene un valor concreto: el error aparece dentro de la función, donde está la causa, en vez de aparecer en quien la llama.
Parámetros opcionales
Un parámetro opcional lleva ? y su tipo pasa a incluir undefined:
function printName(obj: { first: string; last?: string }) {
if (obj.last !== undefined) {
console.log(obj.last.toUpperCase());
}
}
async
Una función async devuelve una promesa, así que su retorno se envuelve:
async function getFavoriteNumber(): Promise<number> {
return 26;
}
Funciones como tipo
Un tipo puede describir una función. En una interface genérica, la firma de llamada se escribe entre llaves:
interface GenericIdentityFn<Type> {
(arg: Type): Type;
}
Una función que no devuelve nada tiene retorno void.