如何在两个文件中共享相同的类型定义

时间:2017-03-20 19:04:19

标签: flowtype

我无法弄清楚如何在两个文件中共享类型定义。考虑:

// /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

请帮忙。

2 个答案:

答案 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文件中键入的所有内容,并从常规代码中导入它们。