type MyExclude<T, K> = T extends K ? never : T
type MyOmit<T, K extends keyof T> = {
[Key in MyExclude<keyof T, K>]: T[Key]
}
// Так тоже работает
type MyOmitAs<T, K extends keyof T> = {
[Key in keyof T as MyExclude<keyof T, K>]: T[Key]
}
// type MyOmit<T, K extends keyof T> = {
// [Key in keyof T as keyof T extends K ? never : T]: T[Key]
// }
// type MyOmit<T, K extends keyof T> = {
// [Key in keyof T extends K ? never : T]: T[Key]
// }
我不明白为什么注释选项不起作用,但至少带有 的选项as,因为我只是将逻辑从中间类型转移到,粗略地说,循环。
由约塞连船长回答,但由我发布。
作为键,您必须传递非泛型类型,即键元组。