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 6.0.3, no se escribió a mano.
Lo que no hace
- No elimina propiedades de un objeto.
Excludetrabaja sobre uniones; el equivalente para objetos esOmit. - No exige coincidencia exacta. Se va todo miembro *asignable* a
U, así queExclude<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.

