实现 Omit
实现一个内置泛型
Omit<T,K>
它的功能是从 T 中删除 K 包括的元素,最后将结果以对象的形式返回
interface Todo {
title: string
description: string
completed: boolean
}
type TodoPreview = MyOmit<Todo, 'description' | 'title'>
const todo: TodoPreview = {
completed: false,
}
简单实现一个 Pick
type Pick<T, U extends keyof T> = {
[P in U]: T[P]
}
然后实现一个 Exclude
// T 如果是 U 的子类型,返回 never 否则返回 T
type Exclude<T,U> = T extends U ? never : T
然后结合上述两种方式,进行组合实现 Omit
type Omit<T, K> = Pick<T, Exclude<keyof T, K>>