我无法弄清楚如何在两个文件中共享类型定义。考虑:
// /file_a.js
export const randomVariable: MySharedType = {thing: true};
// /file_b.js
export const anotherRandomVariable: MySharedType = {thing: false};
两个文件都使用MySharedType
类型,因此我想将该类型声明移动到某些共享类型定义。
所以我为它创建了一个新目录,并在我[libs]
的{{1}}部分下指向它。结果是我有:
flowconfig
然而,流不想玩得很好而且仍然给我错误:
// in /flow/typeExtensions/SharedTypes.js
// @flow
export type MySharedType = {thing: boolean}
我找不到任何有关如何创建全局共享流式定义的文档或示例。
这是一个展示问题的小型回购:https://github.com/EvNaverniouk/shared-flow-types
请帮忙。
答案 0 :(得分:5)
显然问题是Flow无法识别对global [lib]文件的更改。所以解决方案只是重启流服务器:
./node_modules/.bin/flow stop
./node_modules/.bin/flow start
现在共享类型工作正常。 捂脸
答案 1 :(得分:1)
我发现导入和导出类型(如常规javascript函数和类)更容易。所以像这样:
<强> file_a.js 强>
// @flow
export type MySharedType = {thing: boolean}
export const randomVariable: MySharedType = MySharedType;
<强> file_b.js 强>
import type { MySharedType } from 'file_b';
export const anotherRandomVariable: MySharedType = {thing: false};
通过这种方式,您可以将类型定义保持在它们所属的代码附近(例如,可以从与组件本身相同的文件中导出React组件的PropTypes),也可以创建“类型库”,即定义您在单独的javascript文件中键入的所有内容,并从常规代码中导入它们。