Volver a Funciones
Ir al examen del modulo
Funciones — Leccion 5
·15 minFunction Overloads
Multiples firmas para una misma función.
Function Overloads
Permite definir múltiples firmas para una función, con diferentes tipos de parámetros y retorno.
typescript
// Firmas de overload
function format(valor: string): string;
function format(valor: number): string;
function format(valor: string | number): string {
if (typeof valor === "string") {
return valor.toUpperCase();
}
return valor.toFixed(2);
}
format("hola"); // "HOLA" (retorna string)
format(3.14); // "3.14" (retorna string)
Cuando usar overloads
Diferentes tipos de retorno
typescript
function buscar(id: number): Usuario;
function buscar(nombre: string): Usuario[];
function buscar(param: number | string): Usuario | Usuario[] {
if (typeof param === "number") {
return { id: param, nombre: "Ana" };
}
return [{ id: 1, nombre: param }];
}
const usuario = buscar(1); // Usuario
const usuarios = buscar("Ana"); // Usuario[]
Diferente cantidad de argumentos
typescript
function crear(nombre: string): void;
function crear(nombre: string, edad: number): void;
function crear(nombre: string, edad?: number): void {
if (edad !== undefined) {
console.log(`Crear ${nombre}, ${edad} años`);
} else {
console.log(`Crear ${nombre}`);
}
}
crear("Ana"); // OK
crear("Juan", 25); // OK
Limitaciones
typescript
// Los overloads deben ser compatibles con la implementación
function proceso(x: string): string;
function proceso(x: number): number;
function proceso(x: string | number): string | number {
// La implementación debe manejar ambos casos
return x;
}
// No se puede sobrecargar con diferentes cantidades de opcionales
// TypeScript no permite overloads con parámetros por defecto
Ejercicio pratico
Crea una función 'obtener' que acepte un number (id) o string (nombre) y retorne相应的 información.
exercise.ts
Loading...
Resultado
Haz clic en "Ejecutar" para ver el resultado...