Un union (A | B) significa "A o B". Una intersection (A & B) significa "A y B a la vez".
= | | ;
: = ;
() { }
Un union (A | B) significa "A o B". Una intersection (A & B) significa "A y B a la vez".
= | | ;
: = ;
() { }
function format(x: string | number) {
// x.toFixed(2); // ❌ toFixed doesn't exist on string
if (typeof x === "number") return x.toFixed(2); // ✅ narrowed to number
return x.toUpperCase(); // ✅ here it's a string
}
Hasta que hagas narrowing de un union, solo puedes acceder a miembros presentes en cada miembro del union: el compilador te protege.
type Name = { name: string };
type Age = { age: number };
type Person = Name & Age; // must have BOTH name and age
const p: Person = { name: "Ann", age: 30 }; // both required
Las intersections son ideales para componer o mezclar tipos de objeto (por ejemplo, añadir props a un tipo existente).
Los unions modelan "una de varias posibilidades": la base del modelado seguro de estado (por ejemplo, discriminated unions para el estado de un reducer), las sobrecargas de funciones y los tipos nullable (T | null).
Las intersections componen tipos entre sí.
Juntos hacen que el sistema de tipos de TypeScript sea lo bastante expresivo como para reflejar datos reales con precisión.
Una biblioteca de preguntas de entrevista de IT con respuestas detalladas — de Junior a Senior.
Donar