Saltar al contenido

    ↑↓ mover · ⏎ abrir · esc cerrar

    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 | number
    • Exclude<'a' | 'b', 'a' | 'b'>
      never

      Excluir 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.