在模块上找不到导出

时间:2018-09-10 12:40:46

标签: typescript babeljs rollup

我有一个图书馆,在我导出界面的文件之一中:

start[i]

,并且有一个默认导出,它是一个react组件。

end[i]文件上,我导入了一些东西,然后重新导出:

export interface MyInterface {
...
}

编译时出现错误:

  

MyInterface不是由QuestionFile导出的。

我的目标是,无论谁导入我的库,都能够导入该类型定义以供使用。

有更好的方法吗?

如果我这样做:

index.ts

它可以工作,否则会破坏我的构建。

可以在此存储库中找到有关发生情况的示例:https://github.com/PlayMa256/typescript-babel-error

2 个答案:

答案 0 :(得分:5)

重新导出类型是使用Babel编译TypeScript时不起作用的已知TypeScript结构之一,因为它们需要跨文件信息。在使用isolatedModules(不是Babel)进行编译或在IDE中使用TypeScript语言服务时,可以启用tsc TypeScript编译器选项以将这些构造报告为错误。 export *是一种解决方法; this issue中的另一个描述是使用类型别名而不是重新导出。另一个解决方法是将常量与接口合并。 (这是一种技巧,但避免了其他方法的某些缺点。)

export interface testInterface {
    name?: string;
}
export const testInterface = undefined;

答案 1 :(得分:1)

来自https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/

<块引用>

作为 TypeScript 3.8 的解决方案,我们为仅类型导入和导出添加了新语法。

import type { SomeThing } from "./some-module.js";

export type { SomeThing };