在一个文件中,我在以下行中导出包的所有类:
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上构建组件库
答案 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,
...
}