TypeScript Omitを使わずに指定したキーをオブジェクトから削除する

指定したキーを削除した型を返したい場合はOmitを使います。
type User = {
firstName: string
lastName: string
age: number
}
type T1 = Omit<User, 'lastName' | 'age'>
// {
// firstName: string;
// }
Omitを使わない場合は、以下のようにすることで同じようなことが可能です。
type MyOmit<T, K extends keyof T> = {
[P in keyof T as P extends K ? never : P]: T[P]
}
type T2 = T3<User, 'lastName' | 'age'>
// {
// firstName: string;
// }
as P extends K ? never : P のようにすることで、オブジェクトのキーの型を上書きすることができます。
P が K と互換性があるなら P型(文字列リテラル)、そうでない場合は never型になります。
キーがnever型になると、そのキーはなくなることを利用しています。
このキーの型を上書きする方法は公式ドキュメントにも記載されています。
最近のコメント