有谁知道是否有一个分析JavaScript代码和检测类型错误的好工具?我知道JavaScript本身是弱动态类型的,但如果我有一个程序可以验证我的所有字段访问都是合理的,并且我不会尝试处理像字符串这样的数字,那将是非常好的。我知道在JavaScript中有一些有效的用例,其中添加或删除字段或在不同类型之间进行转换是有效和预期的,但是有些错误是如此明显,似乎它们可能在脚本开始运行之前被捕获。
我听说过JSLint,但我的理解是它主要是一种样式工具而不是语义分析器。如果我对此错了,那么告诉我这个问题就是这个问题的有效答案。
答案 0 :(得分:7)
如果您按照建议使用jsDoc注释注释函数,Google闭包编译器会执行某些类型检查。见http://code.google.com/closure/compiler/docs/js-for-compiler.html
答案 1 :(得分:2)
另一种选择 - https://github.com/yarax/typelint
这是一个EsLint插件,它根据JSDoc注释进行类型检查。
此外,它支持自己的扩展,以使用Redux状态或Swagger模式(基本上任何JSON模式)进行类型检查。因此,您不需要自己描述复杂的复合类型。
答案 2 :(得分:1)
由于JavaScript的动态特性,使用任何自动化工具都无法自信地进行静态分析。但是,一个做得很好的工具是Jetbrain的WebStorm以及其他支持JavaScript的IDE。
答案 3 :(得分:0)
答案 4 :(得分:0)
以下是有关如何在JavaScript中进行类型检查的基本示例:
const Int = (val) => {
if (Number.isInteger(val)) {
return val;
}else {
throw new TypeError(`Argument value ${val} is not integer`);
}
return 0; //Unreachable: for static analysis
};
const sum = function(_, numA = Int(_[0]), numB = Int(_[1])) {
return `Sum is ${numA + numB}`;
};
console.log(sum([1, 2])); //correct
console.log(sum([1, "2"])); //incorrect