1.首先,我想确认一下从编程的角度,我们有“静态类型检查”和“动态类型检查,对把?
2.一般情况下我们用typescript做静态类型检查,检查源码里面自定义数据类型,对把?
3.那么,我们做的所谓的动态类型检查是不是指的那些库,比如Joi,ajv什么的,比如你点击一个按钮,然后调这个库来检查一个obj的schema,如果类面的key value类型都能对的上,我们就通过,如果类型对不上,我们就报错。这个我理解的对把?
4.另外,我想问一下,ts可以做动态类型检查吗?
5.我最大的困惑来自于,那个源码我们是自己写的,为啥ts还这么的重要,用来检查类型?相反,动态的数据是“运行时“来的,也就是,要不是call api的来的,要不是终端用户输入填写的时候来的,这个时候数据的结构才是不确定的,反而没有那么多的人讨论这个,ok,就算你说,有可能这个是一个庞大的项目,有几百个人一起合作,但是我看到useState("")的时候我肯定知道这个type是一个string阿,ts为什么那么重要阿。我看到其他人举例说function的参数,可能有很多很多,如果加上ts,方便知道传什么,不过我感觉这种情况不是很常见,程序员自定义的函数,或者自己去封装,一般都不会搞很多参数进去吧。
6.您觉得静态检查和动态检查哪个更重要,或者说在你的开发生涯中,是静态type报错的多,还是动态报错更常见呢?
7.react自带的那个propTypes库,是动态检查还是静态检查阿?
感谢大佬的回答,如果您能逐一回答yes或者no,来确认我的理解是否准确就更好了。
index.d.ts
,那么函数如何使用是很明显的。因为我不需要看函数实现的细节,只要告诉我参数几个、类型几何、返回值是什么样就好了。可能说 JSDoc 也可以做到类似的效果,那可以问问自己,平时注释都没写几行的人,还写 JSDoc?我觉得和注释是差不多的,有,当然最好,而且是可以实实在在地提供检查和提示。不然也不会有那么多的defineConfig()
了。当然,这并不能说:无脑用 TypeScript 就可以了!只是给了一种可选的方式而已(Any or Type)。