Saltar al contenido

    ↑↓ mover · ⏎ abrir · esc cerrar

    Formas de objeto

    Omit

    Descarta las claves nombradas — y, a diferencia de `Pick`, no le importa si alguna vez estuvieron.

    Qué es

    No es una primitiva: `Omit` es `Pick<T, Exclude<keyof T, K>>`, como muestra sin rodeos la definición de al lado. La restricción es `keyof any`, no `keyof T`, y esa única diferencia causa la mayoría de los errores en los que participa este tipo.

    Ejemplos

    • Omit<{ a: string; b: number }, 'b'>
      { a: string; }
    • Omit<{ a: string }, 'typo'>
      { a: string; }

      Sin error y sin efecto. Una clave mal escrita no omite nada en silencio, y el tipo sigue pareciendo correcto.

    • Omit<{ a: string; b: number; c: boolean }, 'a' | 'b'>
      { c: boolean; }

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

    Lo que no hace

    • No comprueba las claves que le pasas. `Omit<User, "nmae">` compila, no quita nada, y es el error silencioso más común en bases de código TypeScript.
    • No distribuye sobre uniones, así que omitir de `A | B` colapsa primero a las claves compartidas y solo después quita algo.

    Conclusión

    Si quieres que la errata se detecte, escribe el tuyo: `type StrictOmit<T, K extends keyof T> = Omit<T, K>`. La restricción es todo el arreglo.