鉴于从另一个模块导入的类型定义,您如何重新导出它?
/**
* @flow
*/
import type * as ExampleType from './ExampleType';
...
// What is the syntax for exporting the type?
// export { ExampleType };
答案 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)
答案 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;
}
答案 3 :(得分:1)
我刚刚发现需要一个单行程来为ES6默认类做这个,基于@ locropulenton的答案。假设你有
// @flow
export default class Restaurants {}
在Restaurants.js
文件中。要从同一目录中的index.js
文件导出它,请执行以下操作:
export type {default as Restaurants} from './Restaurants';