javascript中的类型安全,或者如何避免很难检测到的类型相关错误
Typesafety in javascript or how to avoid pretty hard to detect type related errors
我来自Java世界,即一个类型安全的世界,我现在正在做一些事情,我需要使用javascript的客户端执行。
由于JS的非类型化,我经常遇到很难检测到的错误,我想知道是否有任何方法可以事先防止它。例如,设置"use typification"之类的东西,或者通过一些工具在执行前做这些检查,就像编译器做的那样。
。上次是我用three.js创建一张脸的时候。根据顶点的顺序,一个面是正面的还是非正面的。我把那个弄混了,然后复制粘贴了参数,在这种情况下,我也复制了太多括号,所以它最终在错误的地方只用一个而不是三个顶点调用方法,这当然会导致错误。然而,在第2107行3 .js代码,它花了一段时间来找出这个小复制粘贴问题。与java相比,编译器会直接抱怨我尝试用1而不是3个参数调用方法…
希望有这样的东西。或者有一些如何更快发现这些东西的建议吗?
干杯汤姆
在实际使用javascript文件之前,您可以使用各种检查工具来扫描它们。目前业界比较流行的是JSLint、JSHint、JSCS和ESLint。
它们内置了各种规则集,您可以配置这些规则集,也可以添加自己的规则。
您可以将它们与JAVA世界中的checkstyles和PMD进行比较。
你有很多答案。但首先,需要澄清:Java不是类型安全的(参见:NullPointerException
, history of)。
但是,为了在任何动态语言中更接近类型安全,您可以选择在代码中添加断言。这在某种程度上可以自动化,如果可能会导致性能问题。这是我通常采取的路线,但我肯定不会在three.js中这样做。
对于JavaScript,你有两个额外的选项:TypeScript和Flow。
TypeScript是一种带有类型注释的JavaScript方言,它被编译成纯JS。Flow是一个用OCaml编写的静态分析器,它试图推断JS代码中的类型并检查它们。- 为什么Object.protype.toString.call(foo)可以检测到foo's类型
- 如何简单地用JQuery或JavaScript检测浏览器类型
- 检测用户拖动范围类型输入
- 用于检测CSV文件类型的Javascript正则表达式
- 在JavaScript中,如何检测天气的类型是数组或对象
- 如何检测冒泡是否遇到某种类型的元素
- JQuery 通过表单输入类型=“文件”提交后检测插入的图像
- 检测换行符的类型
- 打字稿中的类型检测
- 如何在 JavaScript 中检测源文件类型
- 立即检测<输入类型=“;文本“>通过JavaScript修改
- 理解解释动态语言中的类型检测
- 未捕获的类型错误:无法读取属性'获取'检测到chrome扩展时未定义的
- 使用Javascript检测操作系统类型,并根据每个操作系统执行不同的操作
- 带有hammerjs滑动检测的输入类型范围在移动safari上不可用
- 如何检测带有源的音频标记的错误类型
- 如何正确地检测变量类型,并检测比函数类型更多的类型
- 正在检测客户端是否安装了任何类型的PDF阅读器
- 立即检测输入[类型=“文本”]的变化
- 检测数组中有多少不同类型的值