不使用 Omit
实现 TypeScript
的 Omit<T, K>
泛型。
Omit
会创建一个省略 K
中字段的 T
对象。
例如:
1 2 3 4 5 6 7 8 9 10 11 12
| interface Todo { title: string description: string completed: boolean }
type TodoPreview = MyOmit<Todo, 'description' | 'title'>
const todo: TodoPreview = { completed: false, }
|
解答
1 2 3 4 5 6 7 8 9 10 11 12 13
| interface Todo { title: string; description: string; completed: boolean; }
type MyOmit<T, K extends keyof T> = { [P in keyof T as P extends K ? never : P]: T[P]; };
type error = MyOmit<Todo, "description" | "invalid">;
|