JavaScript静态类型检查的当前状态是什么?

时间:2011-07-12 23:56:01

标签: javascript google-closure-compiler

我知道Google Closure Compiler会进行类型检查 - 但是有没有其他选择,最好是与库和优化器没有紧密结合?

如果没有,有没有办法让Google Closure Compiler 进行静态分析?

(通过这里的静态分析,我的意思是定义参数的类型等等,如果我输入错误或传递错误的类型,我可以通过某些内容给出警告。)

3 个答案:

答案 0 :(得分:2)

Doctor JS,这是一个Mozilla项目,主要(据我所知,至少)对JS进行类型检查。

答案 1 :(得分:0)

微软的AJAX Minifier对于你需要对JS文件进行准备以获得有用的结果有点放松。您可以使用默认值运行它,并获得仍然适用于外部代码的高度缩小的文件: http://ajaxmin.codeplex.com/

但是,由于Javascript的设计方式,Closure Compiler和Ajax Minifier都只能进行超出基本linting的非常有限的静态分析。访问未声明的属性可能只是检查未定义,分配未声明的变量只是意味着在全局范围内声明它,将对象分配给包含数字的变量是合法的等等。在JS中有很多合法的是您的典型语言(Java,C#)认为超出界限,因此在不声明特定编译器的类型,边界和期望的情况下,您可能会在可能阻止的错误中受到限制。

我对那些可以在大二(MS和谷歌)之间转换的东西更感兴趣。它对IDE支持,使用高级优化测试代码大小等非常有用。

答案 2 :(得分:0)

我对intellij idea / webstorms编辑器非常满意,该编辑器解析jsdoc并进行自己的静态分析以标记潜在或实际的类型安全错误。它已被证明非常有用,虽然需要一些工作才能使继承与一些通用框架一起工作。由于javascript原型继承可能采用大量方法,编译器需要比其他语言更多的帮助。

它是一个商业工具,但我能够将它用于java,php,javascript,python和ruby项目,所有这些都有一些相当不错的静态分析和重构帮助程序。我以前经常使用emacs和为jshint和闭包编译器运行node.js进程,但这样做不那么脆弱了。

相关问题