请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

1回答

qq_慕勒0042242 2021-05-09 13:36:58

Omit<T, K>

此工具可认为是适用于键值对对象的 Exclude,它会去除类型 T 中包含 K 的键值对。

/**
 * Construct a type with the properties of T except for those in type K.
 */
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;

在定义中,第一步先从 T 的 key 中去掉与 K 重叠的 key,接着使用 Pick 把 T 类型和剩余的 key 组合起来即可。可以发现,Omit 与 Pick 得到的结果完全相反,一个是取非结果,一个取交结果。

type Person = {
    name: string;
    age: number;
};

type A = Exclude<keyof Person, "name" | "age">; 
// ==> type A = never

type B = Pick<Person, A>;
// ==> type B = {}

const haha: Omit<Person,'name'|'age'> = { name:'dafda' };
// ==> const haha:{} = { name: 'dafda' }


0 回复 有任何疑惑可以回复我~
  • 因为你的类型声明是空的{},所以你里面写啥都不会报错,比如
    const haha: Omit<Person,'name'|'age'> = { sex:'男' };
    回复 有任何疑惑可以回复我~ 2021-05-14 10:15:56
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号