如何在启用isolatedModules = true选项的情况下创建包?

时间:2018-11-23 09:58:38

标签: reactjs typescript babeljs create-react-app

在一个文件中,我在以下行中导出包的所有类:

export {default as BoundList, IBoundListOption, TBoundListFilterFn} from './list/BoundList';
产生以下形式的错误:

TS1205: Cannot re-export a type when the '--isolatedModules' flag is provided.

我现在如何导出课程?

此问题发生在CRA2.1中。不得不强制执行isolatedModules = true。 我正在CRA2.1上构建组件库

4 个答案:

答案 0 :(得分:5)

CRA v3.4.1促进了--isolatedModules下的类型重新导出。版本v7.9.0 +中包含的@babel/preset-typescript(请参见相应的Babel版本和announcement)和TypeScript支持TS 3.8 type-only imports and exports。您现在可以编写:

export type { MyListType } from "./list/BoundList"

// or
import type { MyListType } from "./list/BoundList"
export type { MyListType }
// note additional "type" keyword

有关import / export语法的更多信息,请查看this answer

答案 1 :(得分:3)

github.com/babel/babel-loader/issues/603(感谢链接@CollinD)提供了一种解决方法,用于重新导出导入的类型。关于该问题的This comment最好地解释了一种解决方法:

  

如果很明显要导出类型,您仍然可以执行are-export:

import { T as a_T } from "./a";
export type T = a_T;
     

您也可以执行export * from "./a";

如果我正确地阅读了GitHub问题,则只能重新导出TS类型,但不能重新导出值(例如,类)。因此,如果TS知道您要导入类型(而不是类),则可以重新导出它。

这是另一个更简单的示例:

import { T } from "./a";
export type T = T;

答案 2 :(得分:0)

是-node_modules/fork-ts-checker-webpack-plugin/package.json是“版本”:“ 0.2.2”。

似乎更改是在 Microsoft / TypeScript#15538 中进行的,因此,如果您使用2.3进行测试,则不会看到该错误。但是它将在2.4发布时开始中断。

不过,如果将isolatedModules覆盖为true,那么这都不是问题。

答案 3 :(得分:-1)

tsconfig.json

"compilerOptions": {
    ...
    "isolatedModules": false,
    ...
}