FlowTypes如何从私有npm模块导入类型

时间:2018-04-19 19:50:14

标签: javascript npm flowtype

我正在编写私有npm包以在内部使用,我还想在其中包含一些将在内部项目之间共享并按以下格式导入的流式类型import type {SomeType} from 'our-private-lib'但是我在这样做时遇到了麻烦,什么是使用npm包包含流类型的最佳方法是什么?

目前我正在使用babel转发所有ES代码,然后使用flow-copy-source将原始文件复制到一起编译的文件但扩展名为.js.flow,但这意味着这些文件的名称应该是与已编译的文件相同吗?

例如,如果我在/super-schema/index.js中有

文件
export type SuperSchemaType = {
 prop1: boolean,
 prop2: string
}

const SuperSchema = {
 prop1: true,
 prop2: 'Hello'
}

module.exports = SuperSchema;

package.json指向导出index.js的主文件SuperSchema,如此

module.exports = {
  superSchema: require('./super-schema.js/index.js');
}

然后我可以像这样导入

import {superSchema} from 'our-private-lib';

但是flowtype怎么样? import type { SuperSchemaType } from 'our-private-lib';不起作用

1 个答案:

答案 0 :(得分:1)

您的一般方法是正确的(使用flow-copy-source),但如果您想要使用模块主入口点之外的类型,则需要以这种或那种方式导出类型。您可以通过执行类似

的操作明确地执行此操作
export type {
  SuperSchemaType
} from './super-schema';

或者,如果您使用的是babel 7,导出类型*可能对您有用

export type * from './super-schema';