gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 04:19:09 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com