Typescript高级技巧 - 使用string类型而不丢失自动提示

我们先来看一下这段代码,它有一个Icon组件,其中Icon组件的Prop包含一个color的属性,类型为IconColor

现在这个组件中只支持两种颜色,Red, Blue, 所以当你在使用Icon组件时,设置color属性,你会发现有自动提示出现,因为typescript清楚的知道它将可以被设置成什么值。如下图:

那现在问题来了,我这个IconColor不可能只支持两种颜色,它应该可以是任意颜色, 比如 #BBFFCC 也是合理的输入,那应该怎么定义?

你肯定会想,太简单了,直接加个在定义处string不就好了么。如下:

对于Typescript来说,这样做没有问题,但当你这样定义后,你会发现,编辑color的属性时,自动提示也消失了,本来应该可以自动提示Red, Blue的。

这是因为Red,Blue也是字符串,所以Typescript聪明地将他们合并在一起,IconColor就变成了string类型,自然也就没有自动提示了。

那如何可以做到两全其美呢?

使用Omit

从上图可以看到, 既保留了自动提示,也实现了支持任何字符串。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章