Uniones
Exclude
Elimina de una unión todo miembro asignable a `U`.
Qué es
Un tipo condicional distributivo, y el ejemplo más claro de para qué sirve la distribución. `T` es un parámetro de tipo desnudo a la izquierda de `extends`, así que el condicional se ejecuta una vez por miembro y los resultados se vuelven a unir — los miembros que coinciden pasan a `never` y desaparecen, porque `never` en una unión no es nada.
Ejemplos
Exclude<'a' | 'b' | 'c', 'b'>
→"a" | "c"Exclude<string | number | null, null>
→string | numberExclude<'a' | 'b', 'a' | 'b'>
→neverExcluir todo deja `never`, que es el nombre correcto de la unión vacía.
Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.3, no se escribió a mano.
Lo que no hace
- No elimina propiedades de un objeto. `Exclude` trabaja sobre uniones; el equivalente para objetos es `Omit`.
- No exige coincidencia exacta. Se va todo miembro *asignable* a `U`, así que `Exclude<string | "a", string>` elimina ambos.
Conclusión
Si `Exclude` parece no hacer nada, el lado izquierdo probablemente no es una unión — la distribución necesita miembros sobre los que distribuir.