Funciones genéricas y restricciones (extends, parámetros predeterminados)
Cree funciones genéricas, añada restricciones con extends y utilice parámetros de tipo predeterminados para crear API más ergonómicas.
Funciones genéricas y restricciones (extends, parámetros predeterminados) 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: Hacer que las funciones sean reutilizables y seguras con los tipos mediante genéricos. Definirá parámetros de tipo, añadirá restricciones con extends y establecerá parámetros de tipo predeterminados para mejorar la experiencia de desarrollo.
Genérico identidad
Defina un parámetro de tipo <T>. El compilador infiere T a partir de los argumentos, por lo que quienes llamen rara vez necesitan anotarlo.
function identity<T>(x: T): T {
return x;
}
const a = identity(42); // T inferred as number
const b = identity("ts"); // T inferred as string
console.log(a, b);Restricción con extends
Utilice extends para exigir una estructura (por ejemplo, un id). T puede incluir más campos gracias al tipado estructural.
function getId<T extends { id: number }>(item: T): number {
return item.id;
}
getId({ id: 1, name: "Ada" }); // OK (has id)
// getId({ name: "Lin" }); // Error: missing idRestricción con keyof
Restrinja K con keyof T para permitir únicamente nombres de propiedades de T. El tipo de retorno es el tipo de la propiedad, T[K].
function pluck<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const user = { id: 7, name: "Neo" };
const v1 = pluck(user, "name"); // string
const v2 = pluck(user, "id"); // number
console.log(v1, v2);Parámetros de tipo predeterminados
Los parámetros de tipo predeterminados reducen el código repetitivo. Quienes llamen pueden omitir <T> en los casos habituales, pero seguir sobrescribiéndolo cuando sea necesario.
interface Box<T = string> {
value: T;
}
const aBox: Box = { value: "hi" }; // T defaults to string
const nBox: Box<number> = { value: 123 }; // explicit override
console.log(aBox.value, nBox.value);Consejos
Consejos:
- Deje que la inferencia haga el trabajo; evite las anotaciones T redundantes.
- Añada extends únicamente cuando la implementación necesite miembros de T.
- Proporcione valores predeterminados para los casos habituales y ergonómicos.
Comprobación de restricciones
Comprobación rápida: ¿Qué garantiza T extends { id: number }?
Resumen
Resumen: Defina funciones genéricas, añada restricciones con extends y establezca parámetros de tipo predeterminados para mantener las API flexibles y fáciles de usar.
Preguntas frecuentes
¿La lección «Funciones genéricas y restricciones (extends, parámetros predeterminados)» es gratis?
Sí — el texto completo de «Funciones genéricas y restricciones (extends, parámetros predeterminados)» 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 «Funciones genéricas y restricciones (extends, parámetros predeterminados)»?
Cree funciones genéricas, añada restricciones con extends y utilice parámetros de tipo predeterminados para crear API más ergonómicas. 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 «Funciones genéricas y restricciones (extends, parámetros predeterminados)»?
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
- Funciones genéricas y restricciones (extends, parámetros predeterminados)
- Partial, Readonly, Record, Pick y Omit
- Tipos keyof y de acceso indexado (introducción)