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

TypeScript自定义.d.ts声明文件引用其他声明找不到类型如何解决

问题排查与解决方法

核心原因

你遇到的报错本质是Company类型没有被识别为全局类型,或声明文件没有被TS正确加载,两个常见触发点:

  1. src/types/company.d.ts中使用了export导出语法:一旦声明文件中存在export关键字(包括export interface Company、末尾加export {}等写法),该文件会被TS判定为模块,内部声明的类型不会注册到全局作用域,必须导入才能使用。而你用到的File是浏览器原生全局类型、Recruiter应该是其他未加导出的声明文件里的全局类型,所以可以正常识别。
  2. 少数低版本TS中,include配置仅写src/**/*.ts可能不会主动匹配.d.ts后缀的声明文件,导致company.d.ts没有被加载。

解决方法

方案1:维持全局类型(推荐,适合全项目复用的公共类型)

删除src/types/company.d.ts中的所有export相关代码,确保内容为纯全局声明:

declare interface Company {
  companyName: string;
  companyUrl: string;
}
// 不要加任何export语法

如果调整后仍有报错,可以把tsconfig.json的include配置补充明确的声明文件匹配规则:

"include": [
    "src/**/*.ts",
    "src/**/*.d.ts"
]

方案2:模块式导入(适合小范围使用的类型)

如果你需要保持类型的模块隔离性,保留company.d.ts的export导出,在role.d.ts顶部手动导入类型即可:

//  src/types/role.d.ts 开头添加导入语句
import type { Company } from './company'

declare interface Role {
  // 原有属性定义保持不变
  company?: Company;
  // 原有属性定义保持不变
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:54:02