javascript中的类型安全,或者如何避免很难检测到的类型相关错误

Typesafety in javascript or how to avoid pretty hard to detect type related errors

本文关键字:检测 类型 错误 很难 何避免 类型安全 或者 javascript      更新时间:2023-09-26

我来自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代码中的类型并检查它们。