使用了 Partial 后,如果我想让某个属性一定为必填怎么办呢?

来源:4-11 精益求精 - Buton 组件编码第二部分

慕容4836272

2020-09-08

  1. 首先呢,是不是用了 Partial 改变所以属性为可选参后,前面自定义的可选接口属性就可以改为必填了呢?如下:
interface BaseButtonProps {
  className: string;
  btnType: ButtonType;
  // ...
}
  1. 那么,如果我就是想让 btnType 为必填该怎么做呢?

老师解答辛苦啦!!

写回答

1回答

张轩

2020-09-10

同学你好欧 

1 使用 Partial 是让所有的参数都变成可选。比如这里 Partial<BaseButtonProps> 那么 这个 interface 的所有属性都变成可选

2 可以使用 Partial 以后再用交叉类型,这样后面的会覆盖前面的

type MustHaveBtnType = Partial<BaseButtonProps> & {
    btnType: string;
}


0
2
ywang04
老师 看来你更倾向于用type来实现这样的功能 是不是这样做比interface的extends更灵活呢?如果想使用interface实现同样的功能是否也需要用到Partial?还是有别的实现方式?老师是否可以举例下,谢谢
2021-01-25
共2条回复

React18+TS高仿AntD从零到一打造组件库

设计,开发,测试,发布再到 CI/CD,从0到1造轮子

2123 学习 · 959 问题

查看课程