Typescript高级技巧 - 教你学会assertion函数

大家在写React Typescript组件的时候肯定遇到过这样的问题,看下面的代码,

它会告诉你,userId 可能不存在,所以调用toString()方法会报错。

简单的解决方法如下:

这样是肯定没有问题的,但我们今天说的是assertion函数怎么做,下面让我们来试试:

我们创建了一个assertUserId函数,来检测userId是否存在,如果不存在,就抛异常,看上去没什么问题,但你会发现,尽管已经调用了这个守卫函数,typescript还是认为会报错,这怎么解决?

我们需要用asserts声明 assertUserId 函数的返回值,如下:

这样,就可以告诉Typescript,我们保证调用完这个函数后,props一定是有userId的,并且它的类型是不为空的number,你就别报错了。

完整代码如下:

更进一步,其实这个返回值,你可以改变其为任何类型,比如下面,我们还添加了userName: string类型,它在组件中也可以正常使用:

感谢阅读,欢迎关注!

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

相关文章

推荐文章