Strobe is a type-checker for JavaScript that employs several novel techniques to type-check JavaScript programs.
Strobe integrates type-checking and flow analysis to type-check programs that use control and state to reason about types:
if (typeof stop === "undefined") {
stop = arr.length;
}
Strobe can type-check programs that use dynamically constructed strings to access fields on objects:
o[x + "_mysuffix_"] = 42;
We've used Strobe's types to verify some significant pieces of code, including the ADsafe Web sandbox.
Strobe is open-source and available on Github.