Tipas los parámetros y el valor de retorno, y TypeScript admite parámetros opcionales, por defecto y rest.
ts
// basic
function add(a: number, b: number): number { return a + b; }
// optional parameter (?) — must come after required ones
function greet(name: string, title?: string): string {
return title ? `${title} ${name}` : name; // title is string | undefined
}
// default parameter — implies optional
function inc(n: number, by: number = 1): number { return n + by; }
// rest parameter — typed as an array
function sum(...nums: number[]): number {
return nums.reduce((a, n) => a + n, 0);
}
Expresiones de tipo de función
Puedes describir la firma de una función como un tipo — útil para callbacks y variables que contienen funciones:
ts
type BinaryOp = (a: number, b: number) => number;
const multiply: BinaryOp = (a, b) => a * b; // params inferred from BinaryOp
// callback parameter
function apply(op: (x: number) => number, val: number) { return op(val); }
Sobrecargas (múltiples firmas)
ts
function parse(x: string): number;
function parse(x: number): string;
function parse(x: any): any { return typeof x === "string" ? +x : String(x); }
Por qué es importante
Tipar las funciones con precisión es el núcleo del valor de TypeScript — quienes las llaman obtienen argumentos verificados y tipos de retorno conocidos, los parámetros opcionales/por defecto modelan la flexibilidad del mundo real, y los alias de tipo de función hacen que el código de orden superior (callbacks, manejadores de eventos, middleware) sea autodocumentado y seguro.
