大家在写React Typescript组件的时候肯定遇到过这样的问题,看下面的代码,
它会告诉你,userId 可能不存在,所以调用toString()方法会报错。
简单的解决方法如下:
这样是肯定没有问题的,但我们今天说的是assertion函数怎么做,下面让我们来试试:
我们创建了一个assertUserId函数,来检测userId是否存在,如果不存在,就抛异常,看上去没什么问题,但你会发现,尽管已经调用了这个守卫函数,typescript还是认为会报错,这怎么解决?
我们需要用asserts声明 assertUserId 函数的返回值,如下:
这样,就可以告诉Typescript,我们保证调用完这个函数后,props一定是有userId的,并且它的类型是不为空的number,你就别报错了。
完整代码如下:
更进一步,其实这个返回值,你可以改变其为任何类型,比如下面,我们还添加了userName: string类型,它在组件中也可以正常使用:
感谢阅读,欢迎关注!
| 留言与评论(共有 0 条评论) “” |