从未标记@flow的导入文件中获取类型定义

时间:2016-08-05 13:33:19

标签: javascript flowtype

TL; DR 如何告知flow从未使用@flow声明的导入模块导入类型定义?

更长的版本

流接缝能够从不使用流语法的文件中派生类型(参见示例)。

示例文件'flow.js'

if(Math.random() < 0.5) {
  var y = "hello";
} else {
  var y = 2;
}

var i = y;

命令'流程建议flow.js'

if(Math.random() < 0.5) {
-  var y = "hello";
+  var y: number | string = "hello";
 } else {
-  var y = 2;
+  var y: number | string = 2;
 }
-var i = y;
+var i: number | string = y;

它还能够使用flow get-importers列出特定文件中的所有导入。工具接缝在那里,但我无法弄清楚如何自动告诉flow从未使用@flow声明的导入中获取类型定义。

我希望它遍历导入链,计算类型并在标有@flow的文件中使用它们。我不希望它的类型检查代码没有用@flow标记,只检索类型。

1 个答案:

答案 0 :(得分:2)

我将你的问题改为我认为你的意思。

  

如何为Flow不知道的文件创建类型定义?

有两件事:

  • 如果您拥有该文件(即node_modules内没有第三方lib),那么您可以在其旁边创建一个记录其出口的*.js.flow文件。
  • 如果您拥有的文件(即node_modules内的第三方库等),那么您可以在flow-typed/name-of-library.js
  • 中创建一个libdef文件

对于.js.flow个文件,您可以编写如下定义:

// @flow
declare module.exports: { ... }

对于libdef文件,您可以编写如下定义:

declare module "my-third-party-library" {
  declare module.exports: { ... }
}

希望能回答你的问题

相关问题