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

Khu*_*rob 8 typescript reactjs babeljs create-react-app

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

export {default as BoundList, IBoundListOption, TBoundListFilterFn} from './list/BoundList';
Run Code Online (Sandbox Code Playgroud)

生成表格错误:

TS1205: Cannot re-export a type when the '--isolatedModules' flag is provided.
Run Code Online (Sandbox Code Playgroud)

我现在如何导出课程?

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

for*_*d04 10

CRA v3.4.1便于在--isolatedModules. 包含@babel/preset-typescript在 version v7.9.0+(参见相应的Babel版本和公告)和 TypeScript 支持 TS 3.8 type-only 导入和导出。你现在可以写:

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

// or
import type { MyListType } from "./list/BoundList"
export type { MyListType }
// note additional "type" keyword
Run Code Online (Sandbox Code Playgroud)

有关/语法的更多信息,请查看此答案importexport


Jus*_*ant 6

github.com/babel/babel-loader/issues/603(感谢@CollinD提供的链接)包含一个解决方法,用于重新导出导入的类型。关于该问题的此评论提供了解决方法的最佳解释:

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

import { T as a_T } from "./a";
export type T = a_T;
Run Code Online (Sandbox Code Playgroud)

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

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

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

import { T } from "./a";
export type T = T;
Run Code Online (Sandbox Code Playgroud)