You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从深度导出的自定义TypeScript库导入对象?导入类型失败排查

自定义TypeScript库类型导入失败问题排查

问题背景

更新库目录结构后,本地开发时可正常导入类型,但外部项目安装库后,使用import { Site, User } from '@xxx/<my-lib>'会报错Module "<my-lib>" has no exported member "<my-type>"。

核心问题与解决方法

1. 修正package.json的入口配置

当前package.json的main字段指向源码目录的src/index.js,但发布后的库应该指向编译后的dist目录文件;同时缺少types字段指定类型声明文件,导致外部项目无法识别类型。

修改package.json中的对应字段:

{
  "main": "dist/src/index.js",
  "types": "dist/src/index.d.ts",
  // 其他原有字段保留
}

2. 调整内部导入路径

库内文件使用了绝对路径+.js后缀的导入方式(如src/business/entities/site.js),不符合TypeScript模块解析规范,容易导致编译后路径错误。

将entities.ts和index.ts中的导入改为相对路径(省略后缀):

  • src/business/entities.ts修正后:
export { Site, SiteInterface } from "./entities/site";
export { User, UserInterface } from "./entities/user";
  • src/index.ts修正后:
export * from "./business/entities";
export * from "./business/usecases";

3. 确认类型声明文件生成

检查tsconfig.json中declaration: true是否开启,执行npm run build后,查看dist/src目录下是否生成了对应的.d.ts文件(如index.d.ts、business/entities.d.ts等)。若未生成,需确保include字段覆盖所有源码文件:

"include": ["src/**/*"]

4. 本地验证(可选)

在本地测试项目中通过npm link链接当前库,执行导入测试,确认类型可正常识别后再发布。

内容的提问来源于stack exchange,提问作者Azelytof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:42:40