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,来确认我的理解是否准确就更好了。
用 typescript 可以避免很多编码本身带来的错误,或本问题中重点讨论的类型错误。应用 typescript 后,你只要把控动态数据的入口,使用 class-validator 类似的库,在给那些 "JSON.parse" 而来或未知类型的数据做校验,将动态的数据变成已知类型的数据,就能根绝动态类型报错了。
index.d.ts
,那么函数如何使用是很明显的。因为我不需要看函数实现的细节,只要告诉我参数几个、类型几何、返回值是什么样就好了。可能说 JSDoc 也可以做到类似的效果,那可以问问自己,平时注释都没写几行的人,还写 JSDoc?我觉得和注释是差不多的,有,当然最好,而且是可以实实在在地提供检查和提示。不然也不会有那么多的 defineConfig()
了。当然,这并不能说:无脑用 TypeScript 就可以了!只是给了一种可选的方式而已(Any or Type)。
为第 5 点补充一图,这很直观了。
TypeScript 的 Truthiness narrowing 有如下介绍: all coerce to false, and other values get coerced to true. You can always coerce values to booleans by running them through the Boolean function, or by using t
当您可以调用递归方法而不是必须将递归方法设置为变量时,是否有一种简单的方法来理解? 例如... 只是调用递归函数遍历: self.recurse(node.left) self.recurse(node.right) 必须将递归函数设置为node。左和右。右: 节点。左=自我。递归(node.left) 节点。右=自我。递归(node.left) 另一个例子是删除bst中的一个节点,你必须将递归函
问题内容: 在Node.js Express模块的代码中,我碰到了这一行,为服务器设置继承: 我不确定这样做是什么- MDC文档(https://developer.mozilla.org/en/JavaScript/Guide/Inheritance_Revisited#prototype_and_ proto )似乎说我可以这样做: 确实,我做了这个测试: 看起来一样吗?所以,是的,我想知
例如,一个方法中有10000次循环。当它运行1000次时,backedge\u计数器触发JIT编译。解释器继续执行。当它循环4000次时,JIT编译完成。 我的问题是,剩余的6000次是如何由解释器执行的,还是如何执行本机代码?或者在下次调用此方法之前不会执行本机代码?下次调用此方法时会发生什么?
但后者给了我下面的例外。这是为什么? java.lang.StringIndexOutOfBoundsException:String index超出范围:1 java.lang.StringIndexOutOfBoundsException:String index超出范围:1 java.lang.String.charat(String.java:658)在Scala.Collection.i
假设在快速排序的情况下,我们选择一个轴作为数组的第一个元素。现在,最佳/最坏情况的复杂性是,而在平均情况下,它是。是不是很奇怪(最好的情况复杂度大于最坏的情况复杂度)?