执行tsc编译TypeScript为JavaScript时出现编译报错,请求解决方案
执行tsc编译TypeScript为JavaScript时出现编译报错,请求解决方案
嘿,我来帮你梳理下这些编译错误的解决办法,主要分为配置文件生效问题和代码逻辑问题两部分:
一、解决编译配置不生效的问题
你当前遇到的TS2705和TS2550错误,核心原因是直接运行tsc index.ts时,TypeScript并没有加载你的tsconfig.json配置文件,而是使用了默认编译规则,导致你配置的lib选项没生效。另外你的tsconfig.json还有个小语法错误:
修正tsconfig.json的语法错误
你的compilerOptions里最后一项"skipLibCheck": true,多了个尾逗号,JSON不允许这种写法,会导致配置文件无法被正确解析,把逗号删掉:{ "compilerOptions": { "target": "ES6", "lib": [ "es2015", "es2017", "DOM" ], "module": "commonjs", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true } }让tsc读取配置文件进行编译
不要直接编译单个文件,而是运行不带文件名的tsc命令,它会自动读取当前目录的tsconfig.json:tsc如果只想编译
index.ts同时加载配置,可以用:tsc --project ./tsconfig.json index.ts
二、修正代码里的逻辑错误
除了编译配置的问题,你的代码里还有两处使用Object.entries的错误,即使编译通过,运行时也会出问题:
res.status是一个数字类型的HTTP状态码,不是对象,Object.entries()只能用于遍历对象的键值对,直接写res.status即可;- 如果你想把
exactErrorMsg这个对象格式化成字符串,用JSON.stringify()会比Object.entries()更直观易读。
修正后的错误抛出代码如下:
throw new Error( `Request failed with status ${res.status}, ${JSON.stringify(exactErrorMsg)}` );
总结
按照上面的步骤:先修正tsconfig的语法错误,再用正确的命令编译,最后修正代码里的Object.entries误用,你的编译错误就能全部解决啦。
备注:内容来源于stack exchange,提问作者coderx
相关产品推荐
相关产品推荐

