TL;DR 如何告诉 flow
从未使用 @flow
声明的导入模块导入类型定义?
更长的版本
流接缝能够从不使用流语法的文件中派生类型(参见示例)。
示例文件“flow.js”
if(Math.random() < 0.5) {
var y = "hello";
} else {
var y = 2;
}
var i = y;
命令'flow suggest 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
标记的类型检查代码,只检索类型。
最佳答案
我将您的问题改写为我相信您的意思。
How do I create type definitions for files that Flow does not know about?
有两件事:
- 如果文件归您所有(即不是
node_modules
中的第三方库等),那么您可以在旁边创建一个*.js.flow
文件它记录了它的导出。 - 如果文件不属于您(即
node_modules
中的第三方库等),那么您可以在flow-typed 中创建一个 libdef 文件/name-of-library.js
对于 .js.flow
文件,您可以像这样编写定义:
// @flow
declare module.exports: { ... }
对于 libdef 文件,您可以像这样编写定义:
declare module "my-third-party-library" {
declare module.exports: { ... }
}
希望这能回答你的问题
关于javascript - 从未标记 @flow 的导入文件中获取类型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38790621/