在模块上找不到导出
Export not found on module
我有一个库,在其中一个文件中我导出了一个接口:
export interface MyInterface {
...
}
并且有一个默认导出,它是一个 React 组件。
在 index.ts
文件中,我导入了一些内容,然后重新导出它们:
import Something from "./Something";
import OtherStuff from "./OtherStuff";
import ExportDefault, { MyInterface } from "./QuestionFile";
export { Something, OtherStuff, ExportDefault, MyInterface };
编译时出现错误:
MyInterface is not exported by QuestionFile.
我的目标是,无论谁导入我的库,都可以导入该类型定义以供使用。
有更好的方法吗?
如果我这样做:
export * from "./QuestionFile"
有效,否则会破坏我的构建。
可以在此存储库中找到有关正在发生的事情的示例:https://github.com/PlayMa256/typescript-babel-error
重新导出类型是已知的 TypeScript 结构之一,当使用 Babel 编译 TypeScript 时,这种结构不起作用,因为它们需要跨文件信息。当您使用 tsc
(而非 Babel)编译或在 IDE 中使用 TypeScript 语言服务时,您可以启用 isolatedModules
TypeScript 编译器选项以将这些构造报告为错误。 export *
是一种解决方法; this issue 中描述的另一个是使用类型别名而不是重新导出。另一种解决方法是将常量与接口合并。 (这是一种 hack,但避免了其他方法的一些缺点。)
export interface testInterface {
name?: string;
}
export const testInterface = undefined;
来自https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/:
As a solution in TypeScript 3.8, we’ve added a new syntax for type-only imports and exports.
import type { SomeThing } from "./some-module.js";
export type { SomeThing };
我有一个库,在其中一个文件中我导出了一个接口:
export interface MyInterface {
...
}
并且有一个默认导出,它是一个 React 组件。
在 index.ts
文件中,我导入了一些内容,然后重新导出它们:
import Something from "./Something";
import OtherStuff from "./OtherStuff";
import ExportDefault, { MyInterface } from "./QuestionFile";
export { Something, OtherStuff, ExportDefault, MyInterface };
编译时出现错误:
MyInterface is not exported by QuestionFile.
我的目标是,无论谁导入我的库,都可以导入该类型定义以供使用。
有更好的方法吗?
如果我这样做:
export * from "./QuestionFile"
有效,否则会破坏我的构建。
可以在此存储库中找到有关正在发生的事情的示例:https://github.com/PlayMa256/typescript-babel-error
重新导出类型是已知的 TypeScript 结构之一,当使用 Babel 编译 TypeScript 时,这种结构不起作用,因为它们需要跨文件信息。当您使用 tsc
(而非 Babel)编译或在 IDE 中使用 TypeScript 语言服务时,您可以启用 isolatedModules
TypeScript 编译器选项以将这些构造报告为错误。 export *
是一种解决方法; this issue 中描述的另一个是使用类型别名而不是重新导出。另一种解决方法是将常量与接口合并。 (这是一种 hack,但避免了其他方法的一些缺点。)
export interface testInterface {
name?: string;
}
export const testInterface = undefined;
来自https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/:
As a solution in TypeScript 3.8, we’ve added a new syntax for type-only imports and exports.
import type { SomeThing } from "./some-module.js";
export type { SomeThing };