Saltar al contenido
webtype.orgwebtype.org

    ↑↓ 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 6.0.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.