如何在.d.ts文件中引用node_modules里的Interface或Type?
在.d.ts文件中引用第三方类型的正确方法
方法一:使用import type(模块级引用)
这是最推荐的局部引用方式,适用于仅在当前.d.ts文件中需要第三方类型的场景:
- 先确认类型定义已安装:
- 若第三方包自带类型声明(package.json里有
types字段),直接安装包即可:npm install third-party-package - 若包无自带类型,需安装对应的
@types包:npm install @types/third-party-package --save-dev
- 若第三方包自带类型声明(package.json里有
- 在.d.ts文件中直接导入类型:
// 导入单个类型 import type { SomeType } from 'third-party-package'; // 声明使用该类型的自定义接口 export interface MyProjectInterface { targetProp: SomeType; } - 常见失败排查:
- 若提示找不到模块,检查
tsconfig.json的moduleResolution配置,推荐用NodeNext/Node16或Node - 若文件无任何
import/export语句,TS会将其识别为全局脚本,此时用import type会报错,只需添加export {}将文件转为模块即可
- 若提示找不到模块,检查
方法二:使用三斜线指令(全局/文件级引用)
当需要让第三方类型在当前.d.ts文件全局可用,或在整个项目的全局脚本中自动生效时使用:
- 同样先确保对应的类型包已安装
- 在.d.ts文件最顶部添加指令:
/// <reference types="third-party-package" /> // 无需导入,直接使用第三方类型 interface MyGlobalInterface { targetProp: ThirdPartyType; } - 注意事项:
- 若当前文件是模块(含
import/export),该指令仅作用于当前文件 - 若想让类型在全项目全局脚本中自动可用,可在
tsconfig.json的compilerOptions.types数组中添加包名:{ "compilerOptions": { "types": ["third-party-package"] } }
- 若当前文件是模块(含
内容的提问来源于stack exchange,提问作者MrNobody
相关产品推荐
相关产品推荐

