Saltar al contenido

    ↑↓ mover · ⏎ abrir · esc cerrar

    Uniones

    Extract

    Conserva de una unión solo los miembros asignables a `U`. El complemento de `Exclude`.

    Qué es

    El mismo condicional distributivo con las ramas intercambiadas. Su aplicación más útil no es filtrar primitivos sino volver a acotar una unión discriminada: dada una unión de formas y un discriminante, `Extract` te da el miembro que querías.

    Ejemplos

    • Extract<'a' | 'b' | 'c', 'a' | 'c'>
      "a" | "c"
    • Extract<string | number | boolean, string | boolean>
      string | boolean
    • Extract<Shape, { kind: 'circle' }>
      { kind: "circle"; r: number; }

      Esta es la que vale la pena: sacar un único miembro de una unión discriminada por su etiqueta.

    Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.3, no se escribió a mano.

    Lo que no hace

    • No acota un valor. `Extract` opera sobre tipos; acotar una variable en tiempo de ejecución sigue necesitando una comprobación que el compilador pueda seguir.
    • No da error cuando nada coincide — te devuelve `never`, en silencio, y el fallo aflora en otro sitio.

    Conclusión

    `Extract<Union, { tag: "x" }>` es la versión a nivel de tipos del acotado que ya escribes con `if`. Úsalo cuando un genérico necesita un miembro de la unión que recibió.