generated at
Omit<T, K extends keyof T>
K に指定したものを除外する

ts
type A = Omit<{ a: string; b: string }, 'a'>; // {b: string}



実際の定義
ts
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
なぜか K extends keyof any
K extends keyof T だとなにか問題がある #??


他の定義例
ts
type Omit<T extends object, K extends keyof T> = { [key in Exclude<keyof T, K>]: T[key]; };
こっちの定義のほうが自然な気がするmrsekut
ts
type Omit<T, K extends keyof T> = { [Key in keyof T as Key extends K ? never : Key]: T[Key]; };