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

