如何从单个index.d.ts导出所有d.ts类型文件?
解决TypeScript从index.d.ts导出其他类型文件的问题
问题原因分析
你遇到的两个报错本质是同一个问题:event.d.ts没有被定义为模块,同时导入路径不能带.d.ts后缀。
- 第一个报错:TypeScript不允许导入路径以
.d.ts结尾,必须省略后缀 - 第二个报错:
event.d.ts里的接口是全局类型,不属于任何模块,无法通过export *导入
正确解决方案
步骤1:将event.d.ts转为模块
在event.d.ts中给接口添加export关键字,让文件成为合法的TypeScript模块:
// types/event.d.ts export interface EventJD { typeName: string; fieldName: string; }
步骤2:在index.d.ts中导出模块内容
现在可以通过省略后缀的路径导入并导出所有类型:
// types/index.d.ts export * from "./event";
特殊情况处理(无需修改原event.d.ts)
如果无法修改原event.d.ts文件(比如是第三方类型定义),可以在index.d.ts中手动导入并导出需要的类型:
// types/index.d.ts // 先导入全局类型 import type "./event"; // 重新导出指定类型 export type EventJD = EventJD;
这种方式适合全局类型文件,但需要逐个导出每个类型,不如将文件转为模块的方式高效。
内容的提问来源于stack exchange,提问作者JimmyTheCode
相关产品推荐
相关产品推荐

