Typescript 在TS 3.2.2中使用--isolatedModules时,无法重新导出类型

Typescript 在TS 3.2.2中使用--isolatedModules时,无法重新导出类型,typescript,webpack,webpack-4,Typescript,Webpack,Webpack 4,我可能需要重新思考一下我们构造组件的方式。我们正在使用最新的react脚本,允许使用Typescript,默认情况下,isolatedModules正在启用,这让我有点不舒服 我们曾经这样构造一个组件: Component |_ Component.tsx |_ index.ts |_ types.ts Component.tsx保存没有声明的实际组件 index.ts只是重新导出所有内容,这样我们就可以有一个单一的入口点,并可以从“@/Component”导入组件,{ComponentTy

我可能需要重新思考一下我们构造组件的方式。我们正在使用最新的react脚本,允许使用Typescript,默认情况下,
isolatedModules
正在启用,这让我有点不舒服

我们曾经这样构造一个组件:

Component
|_ Component.tsx
|_ index.ts
|_ types.ts
  • Component.tsx
    保存没有声明的实际组件
  • index.ts
    只是重新导出所有内容,这样我们就可以有一个单一的入口点,并可以从“@/Component”导入组件,{ComponentType}

  • types.ts
    保存实际的类型定义并导出其中的大部分或全部

到目前为止还不错,这在没有
隔离模块的情况下也能正常工作。但是,我们还导出了一些类型定义,有效地重新导出了
组件/types.ts
中指定的接口。这将无法工作,因为TypeScript本身将不再传输代码


如何在没有单独的导入语句转到
@/Component/types
(这可能是实际的更简单的方式)的情况下重新导出此文件?

我个人使用的是相同的结构,在移动到执行
隔离模块的
create react app
样板文件后遇到了相同的问题。与
isolatedModules
背后的思想形成鲜明对比的一个解决方法是使用
export*from“/Component”
index.ts中

ts 3.8+ 您可以与
--隔离模块一起使用:

// types.ts
export type MyType = { a: string; b: number; };
);请查看可能的扩展表格和建议


TS 3.7或更高版本 在以前的版本中,无法执行以下操作:

import { MyType } from './types'; 
export { MyType }; // error: Cannot re-export a type with --isolatedModules

export { MyType } from "./types"; // error, like above
类型再出口必须使用:


注:上述功能在Babel中受支持,从
import { MyType } from './types'; 
export { MyType }; // error: Cannot re-export a type with --isolatedModules

export { MyType } from "./types"; // error, like above
import { MyType as MyType_ } from "./types";
export type MyType = MyType_;

// or
export * from "./types"