为什么Flow需要注释导出函数的参数?

cze*_*rny 4 flowtype

以下代码(Flow playground):

/* @flow */

function a(p) {}
module.exports = a
Run Code Online (Sandbox Code Playgroud)

抛出异常

3: function a(p) {}
              ^ parameter `p`. Missing annotation
Run Code Online (Sandbox Code Playgroud)

这是为什么?我希望any自动为参数假定该类型p.

Gab*_*lla 6

文档:

模块边界

Flow需要在模块边界进行注释.这允许Flow单独分析模块,从而提高跨模块边界检查类型的性能.我们发现这有助于改善模块接口的自我记录性质.