旧TypeScript代码编译失败求助:TS1110类型错误
解决TS1110编译错误的方案
核心问题
你使用的TypeScript 3.9.7版本过低,无法识别TS5.0版本@types/react中的模板字面量类型语法(${T})。仅锁定@types/react-dom版本无效,因为它会自动拉取兼容的高版本@types/react,导致版本不匹配。
具体修复步骤
- 同时锁定
@types/react和@types/react-dom的兼容版本:在package.json的resolutions字段中同时指定适配TS3.9的版本,比如17.x系列:"resolutions": { "@types/react": "17.0.62", "@types/react-dom": "17.0.20" } - 清理Docker缓存并重新构建:Docker会缓存依赖文件,需强制重新安装:
- 停止容器:
docker compose down - 清理缓存(可选,确保彻底更新):
docker system prune -f - 重新构建启动:
docker compose up --build
- 停止容器:
- 验证依赖版本:进入前端容器执行
yarn list @types/react @types/react-dom,确认两个依赖均为你指定的17.x版本,无TS5.0版本混入。
额外注意事项
- 若项目使用npm而非yarn,需用
overrides字段替代resolutions(npm 8.3+支持):"overrides": { "@types/react": "17.0.62", "@types/react-dom": "17.0.20" } - 确保
package.json中react和react-dom的实际版本与@types版本匹配(比如均为17.x),避免类型与库本身版本不兼容。
内容的提问来源于stack exchange,提问作者Ray
相关产品推荐
相关产品推荐

