为什么我的TS代码中出现了TS80005错误?
为什么我的TS代码中出现了TS80005错误?
嘿,我仔细扒了你的代码和配置,找到了触发TS80005错误以及相关问题的根源,咱们一步步来理清楚:
问题1:类型不匹配触发的核心错误
你在utils.ts里定义的sqrtRoot函数明确要求参数是number类型,但在index.ts中却传入了字符串"asd"。再加上你在tsconfig.json里开了strict: true严格类型检查模式,TypeScript直接就抛出了类型错误,而TS80005就是这类类型问题衍生的提示之一。
解决办法:
确保传入sqrtRoot的参数是数字类型,比如改成:
console.log(utils.sqrtRoot(9)); // 传入合法数字,而非字符串
问题2:模块导入导出的语法混用
虽然你当前用的是CommonJS的require和module.exports,但在TypeScript项目里,更推荐用ES模块的import/export语法——这能让TS更好地做类型推断,也能避免不少模块系统相关的奇怪错误(包括你遇到的TS80005)。
修改后的代码示例:
utils.ts改用ES导出:
export function sqrtRoot(x: number): number { return Math.sqrt(x); }
index.ts改用ES导入:
import { sqrtRoot } from "./utils"; console.log(sqrtRoot(9));
额外的配置小提醒
你的tsconfig.json配置本身是没问题的,target: es2016搭配module: commonjs的组合能让TS正确编译成CommonJS模块,只是导入时可以省略.ts扩展名,TS会自动识别。
按照上面的修改,你的代码就能顺利通过TS的类型检查,TS80005错误也会消失啦!
备注:内容来源于stack exchange,提问作者Kishan Kumar
相关产品推荐
相关产品推荐

