【前端】TypeScript 在 .d.ts 声明文件中使用import语法导入报错解决方案

在.d.ts文件中,如果包含import,外部可能无法找到该声明导致类型检查错误。通过注释import可以消除错误,但需要在多个地方同步修改。文章提供了一种方法,允许正确引入已定义的类型,避免了重复修改的问题。

.d.ts 声明文件中,规定不允许 import 否则外部将无法使用声明,从而导致类型校验失败,具体表现如下:
在这里插入图片描述一片飚红。。。因为外面找不到这个声明文件了

在这里插入图片描述把他注释掉就不会飚红了,可我们怎么引入已经写好的类型呢?看下面

在这里插入图片描述
这样就行了,避免了每次要修改两个地方的困境

参考文章:https://www.5axxw.com/questions/content/fbqkul

使用 TypeScript 3.9.10 时,如果遇到与 `shims-tsx.d.ts` 文件相关的报错,通常与类型定义文件的配置、模块声明或全局扩展有关。以下是可能的原因分析及解决方案: ### 原因分析 1. **模块声明不完整或冲突** `shims-tsx.d.ts` 文件通常用于声明 `.tsx` 文件的处理方式。如果未正确配置模块映射,或者与其他类型定义文件(如 `shims-vue.d.ts`)存在命名冲突,可能会导致 TypeScript 报错。例如,未正确声明 `*.tsx` 文件应由 `react` 模块处理,可能导致模块解析失败[^1]。 2. **全局变量扩展不正确** 如果在 `shims-tsx.d.ts` 中尝试扩展全局变量(如 `global` 对象),但未正确使用 `declare module` 语法,可能会导致 TypeScript 无法识别新增的模块或类型。例如,未在模块中正确添加扩展接口,会导致全局变量无法访问新定义的属性[^2]。 3. **类型定义文件路径未包含在 `tsconfig.json` 中** 如果 `shims-tsx.d.ts` 文件未被包含在 `tsconfig.json` 的 `include` 或 `typeRoots` 字段中,TypeScript 编译器将无法识别该类型定义文件,从而导致类型声明无效。 4. **TypeScript 版本兼容性问题** TypeScript 3.9.10 对类型定义文件的处理方式与更高版本略有不同,尤其是对 `.d.ts` 文件中模块声明和全局扩展的支持。如果项目中存在较新的语法或模块声明方式,可能会在 3.9.10 中引发兼容性问题。 ### 解决方案 1. **检查并修正模块声明** 确保 `shims-tsx.d.ts` 文件中的模块声明正确无误。例如,若项目使用 React,则应声明如下内容以确保 `.tsx` 文件由 `react` 模块处理: ```ts declare module '*.tsx' { import React from 'react'; const component: React.ComponentType; export default component; } ``` 2. **确保全局变量扩展正确** 如果在 `shims-tsx.d.ts` 中扩展了全局变量,应使用 `declare global` 语法包裹模块扩展内容,例如: ```ts declare global { namespace NodeJS { interface Global { readonly myGlobal: MyType; } } } ``` 3. **确认类型定义文件路径被包含在 `tsconfig.json` 中** 检查 `tsconfig.json` 文件中的 `include` 和 `typeRoots` 配置是否包含 `shims-tsx.d.ts` 所在目录。例如: ```json { "compilerOptions": { "typeRoots": ["./node_modules/@types", "./types"] }, "include": ["src/**/*", "types/**/*"] } ``` 4. **升级 TypeScript 版本(如可能)** 如果项目允许,建议将 TypeScript 升级到较新版本(如 4.x 或以上),以获得更好的类型定义支持和兼容性改进。3.9.10 已较为老旧,可能存在已知的类型定义处理问题。 5. **验证其他类型定义文件是否存在冲突** 检查 `shims-vue.d.ts` 等其他类型定义文件是否与 `shims-tsx.d.ts` 存在命名空间或模块声明冲突。例如,避免在多个 `.d.ts` 文件中重复声明相同的模块或全局变量[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值