我们先来看一下这段代码,它有一个Icon组件,其中Icon组件的Prop包含一个color的属性,类型为IconColor
现在这个组件中只支持两种颜色,Red, Blue, 所以当你在使用Icon组件时,设置color属性,你会发现有自动提示出现,因为typescript清楚的知道它将可以被设置成什么值。如下图:
那现在问题来了,我这个IconColor不可能只支持两种颜色,它应该可以是任意颜色, 比如 #BBFFCC 也是合理的输入,那应该怎么定义?
你肯定会想,太简单了,直接加个在定义处string不就好了么。如下:
对于Typescript来说,这样做没有问题,但当你这样定义后,你会发现,编辑color的属性时,自动提示也消失了,本来应该可以自动提示Red, Blue的。
这是因为Red,Blue也是字符串,所以Typescript聪明地将他们合并在一起,IconColor就变成了string类型,自然也就没有自动提示了。
那如何可以做到两全其美呢?
使用Omit
从上图可以看到, 既保留了自动提示,也实现了支持任何字符串。
| 留言与评论(共有 0 条评论) “” |