gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:11:46 32 4
gpt4 key购买 nike

我可能需要重新考虑我们构建 React 组件的方式。我们正在使用允许使用 Typescript 的最新 react 脚本,默认情况下,isolatedModules 正在启用,这目前让我有点烦恼。

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

Component
|_ Component.tsx
|_ index.ts
|_ types.ts
  • Component.tsx 包含没有声明的实际组件
  • index.ts 只是重新导出所有内容,因此我们可以有一个单一的入口点,并且可以执行类似 import Component, { ComponentType } from '@/Component' ;

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

目前一切顺利,无需 isolatedModules 也能正常工作。但是,我们还导出了一些类型定义,有效地重新导出了在 Component/types.ts 中指定的接口(interface)。这将不起作用,因为 TypeScript 本身不会再转换代码。

如何在没有单独的导入语句到 @/Component/types 的情况下重新导出它(无论如何这可能是实际的更简单的方法)?

最佳答案

TS 3.8+

您可以使用 type-only imports and exports使用 --isolatedModules:

// types.ts
export type MyType = { a: string; b: number; };
// main.ts 

// named import/export
import type { MyType } from './types'
export type { MyType }

// re-export
export type { MyType } from './types'

// namespace import
import type * as MyTypes from "./types";
export type RenamedType = MyTypes.MyType;
export { MyTypes };

// ^ Note the "type" keyword in statements above

Example Playground ;看看 PR可能的扩展形式和建议。


TS 3.7 或更早版本

在以前的版本中,以下是不可能的:

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

export { MyType } from "./types"; // error, like above

类型再导出必须使用 workaround :

import { MyType as MyType_ } from "./types";
export type MyType = MyType_;

// or
export * from "./types"

关于typescript - 在 TS 3.2.2 中使用 --isolatedModules 时无法重新导出类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53728230/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com