如何导出从其他文件导入的Flow类型定义?

时间:2015-09-16 08:04:07

标签: javascript flowtype

鉴于从另一个模块导入的类型定义,您如何重新导出它?

/**
 * @flow
 */

import type * as ExampleType from './ExampleType';

...

// What is the syntax for exporting the type?
// export { ExampleType };

4 个答案:

答案 0 :(得分:27)

这个问题的最简单形式是“如何导出类型别名?”简单的答案是“与<script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/2.4.3/phaser.min.js"></script> <div id="game_div"> </div>!”

对于您的示例,您可以编写

export type

你可能会问“为什么/** * @flow */ import type * as ExampleType from './ExampleType'; export type { ExampleType }; 是一个类型别名?”那么,当你写

ExampleType

您正在明确创建别名type MyTypeAlias = number; ,其别名为MyTypeAlias。当你写作

number

您隐式创建了类型别名import type { YourTypeAlias } from './YourModule'; ,它将YourTypeAlias的{​​{1}}导出别名。

答案 1 :(得分:9)

这是有效的

export type { MyType } from './types';

修改:在react-native-tab-view

中了解如何完成此语法

答案 2 :(得分:6)

接受的答案是陈旧的,并在我的结尾发出警告。鉴于视图的数量,这里是一个与流量0.10+兼容的更新答案。

MyTypes.js:

  export type UserID = number;
  export type User = {
    id: UserID,
    firstName: string,
    lastName: string
  };

user.js的:

  import type {UserID, User} from "MyTypes";

  function getUserID(user: User): UserID {
    return user.id;
  }

source

答案 3 :(得分:1)

我刚刚发现需要一个单行程来为ES6默认类做这个,基于@ locropulenton的答案。假设你有

// @flow

export default class Restaurants {}

Restaurants.js文件中。要从同一目录中的index.js文件导出它,请执行以下操作:

export type {default as Restaurants} from './Restaurants';