Flow 能在 JS 运行前找出常见的 bug,包括:
- 自动类型转换,
null
引用,- 可怕的
undefined is not a function
.
1 2 3 4 5 |
// @flow function foo(x) { return x * 10; } foo('Hello, world!'); |
$> flow
5: foo('Hello, world!');
^^^^^^^^^^^^^^^^^^^^ function call
3: return x * 10;
^ string. This type is incompatible with
3: return x * 10;
^^^^^^ number
Flow 允许你『平缓地』增加类型断言,
1 2 3 4 5 |
// @flow function bar(x): string { return x.length; } bar('Hello, world!'); |
$> flow
3: return x.length;
^^^^^^^^ number. This type is incompatible with the expected return type of
2: function bar(x): string {
^^^^^^ string
带有 Flow 类型注解的 JS 代码可以 简单转化 为常规的 JS 代码,所以随处运行