tsc script.ts与npx -p typescript tsc运行命令的区别
两个TypeScript编译命令的核心差异
两类命令的执行逻辑完全不同,这是报错出现的根本原因:
- 运行
tsc script.ts时,由于你在命令中显式传入了具体待编译文件名,TypeScript会直接忽略当前目录下的tsconfig.json配置文件,全部使用内置默认编译参数执行编译。TS默认编译目标为ES3,对应的内置类型库中没有收录ES6才新增的数组find方法类型定义,你在tsconfig里配置的target: "ES6"根本不会被读取,因此会抛出Property 'find' does not exist on type 'IVehicle[]'的报错。如果你全局安装的TypeScript版本过旧,也可能因为自带类型库缺失触发同类问题。 - 运行
npx -p typescript tsc时,你没有传入具体待编译的文件路径,TS编译器启动后会自动从当前工作目录向上递归查找tsconfig.json,读取你预先配置的target、lib等所有编译参数,你设置的ES6编译目标对应的类型库包含数组find方法的完整类型定义,自然不会触发类型报错。同时npx -p typescript会调用对应版本的TS包执行编译,也绕过了全局TS版本过低的潜在问题。
你可以自行验证:给第一条命令追加显式编译参数执行
tsc script.ts --target es6 --lib es2015,此时不会再出现find方法的类型报错,也能佐证直接传入文件时tsconfig配置不会生效的逻辑。
内容的提问来源于stack exchange,提问作者Ale
相关产品推荐
相关产品推荐

