Saltar al contenido
webtype.orgwebtype.org

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