Sobrecargas de funciones y firmas de llamada
Declare firmas de sobrecarga para distintas formas de llamada y utilice firmas de llamada dentro de tipos de objeto para crear API flexibles.
Sobrecargas de funciones y firmas de llamada es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 3 lecciones en total.
Introducción
Objetivo: Modelar funciones que aceptan distintas entradas y devuelven distintas salidas mediante sobrecargas, y describir firmas de llamada en tipos de objeto para API similares a callbacks.
Patrón de sobrecarga
Las sobrecargas se declaran como varias firmas más una única implementación que acota las entradas y devuelve el tipo correcto.
// 1) Overload signatures (no body)
function parse(input: string): number;
function parse(input: number): string;
// 2) Single implementation compatible with all overloads
function parse(input: string | number): string | number {
if (typeof input === "string") {
return input.length; // string -> number
} else {
return String(input); // number -> string
}
}
console.log(parse("TS")); // 2 (number)
console.log(parse(123)); // "123" (string)Firmas de llamada
Una firma de llamada permite que un tipo de objeto se pueda invocar con sobrecargas (resulta útil para bibliotecas que exponen funciones invocables con propiedades).
type Stringify = {
(v: number): string;
(v: boolean): string;
};
const toStr: Stringify = (v: number | boolean) => {
return typeof v === "number" ? v.toFixed(1) : (v ? "true" : "false");
};
console.log(toStr(3));
console.log(toStr(false));Refinamiento en la implementación
La implementación debe gestionar todas las formas de sobrecarga. Utilice comprobaciones con in o uniones discriminadas para ramificar de forma segura.
function area(value: { r: number } | { w: number; h: number }): number {
if ("r" in value) {
return Math.PI * value.r ** 2; // circle
}
return value.w * value.h; // rect
}
console.log(area({ r: 2 }));
console.log(area({ w: 3, h: 4 }));Sobrecargas frente a uniones
Sobrecargas frente a uniones:
- Las sobrecargas proporcionan tipos de retorno precisos en cada llamada.
- Las uniones mantienen una sola firma: son más sencillas, pero menos específicas.
- Elija sobrecargas cuando quienes llamen se beneficien de tipos de retorno exactos.
Consejos de DX
Consejos:
- Mantenga pocas sobrecargas y haga que sean claras.
- Documente las diferencias en los parámetros y los valores de retorno.
- Prefiera la precisión del tipo de retorno cuando mejore la experiencia de desarrollo.
Comprobación de sobrecargas
Comprobación rápida: ¿Qué patrón declara correctamente las sobrecargas de una función?
Resumen
Resumen: Utilice sobrecargas para obtener tipos precisos en cada llamada y firmas de llamada para modelar objetos invocables. Estreche los tipos dentro de la única implementación para cubrir todos los casos.
Preguntas frecuentes
¿La lección «Sobrecargas de funciones y firmas de llamada» es gratis?
Sí — el texto completo de «Sobrecargas de funciones y firmas de llamada» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Sobrecargas de funciones y firmas de llamada»?
Declare firmas de sobrecarga para distintas formas de llamada y utilice firmas de llamada dentro de tipos de objeto para crear API flexibles. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar TypeScript Academy?
No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.
¿Cuánto tiempo toma la lección «Sobrecargas de funciones y firmas de llamada»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?
Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Sobrecargas de funciones y firmas de llamada
- Tipado del parámetro this; void y never
- Funciones de aserción y protectores de tipo definidos por el usuario