Does anyone know if there\'s a good tool for analyzing JavaScript code and detecting type errors? I know that JavaScript itself is weakly and dynamically typed, but it woul
There is new type checker from Facebook - flow.
And it has a plugin that would convert your JSDoc annotations to flow annotations.
It's not possible to do static-analysis with confidence using any automated tool owing to the dynamic nature of JavaScript. However, one tool that does a great job is Jetbrain's WebStorm and their other IDEs that have JavaScript support.
Google closure compiler does some type checking if you follow their recommendations for annotating your functions with jsDoc comments. See http://code.google.com/closure/compiler/docs/js-for-compiler.html
Below is a basic example on how to do type checking in 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
One another option - https://github.com/yarax/typelint
It's an EsLint plugin, that does type check based on JSDoc annotations.
In addition it supports it's own extension to use Redux state or Swagger schemas (basically any JSON schema) for type check. So you don't need to describe complex composite types by yourself.