tsconfig.json 文件配置
什么是 tsconfig
根据 TypeScript 官方文档的介绍,tsconfig.json 用于指定 TypeScript 项目的根目录以及指定编译选项。TypeScript 本身提供了一些基于不同运行时环境的 tsconfig.json 的配置项 —— 基本的 TSConfig。
配置项
tsconfig.json可用的配置项非常多,这里日常收集用到的配置项
顶级配置
| 配置项 | 类型 | 含义 |
|---|---|---|
files | string[] | 一些特定的需要编译的文件名集合 |
include | string[] | 一些文件目录匹配模式集合 |
exclude | string[] | 一些相对于include排除的文件 |
compilerOptions | object | 一些编译时的配置项 |
compilerOptions
target
target指定编译后的目标语言环境,默认是 ES3
lib
lib根据target指定的目标语言环境适当引入可用的 js 特性,例如当target >= ES6的时候,Map可用,当然也可以指定的具体的语言特性,例如:
"lib": ["es2019", "es2020.promise", "es2020.bigint", "es2020.string"]
module
module配置项指定模块语法,模块语法可选的就是以下几项:'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext';默认情况下如果target指定为ES3/ES5,模块语法按照CommonJS处理,其他情况按照ES Modules处理。
esModuleInterop
esModuleInterop解决不同模块语法的转换问题
strict
strict配置项启用所有Strict模式的严格检查配置项,这些配置项具体由以下几项组成:
-
alwaysStrict始终使用 JS 的严格模式 -
strictBindCallApply检查bind、call和apply这些方法在调用原函数的时候传递的参数是否符合原函数定义的参数类型 -
strictNullChecks检查类型是否设置了允许传递undefined、null -
strictFunctionTypes严格检查函数类型 -
strictPropertyInitialization检查class的公共属性是否在constructor中定义了 -
noImplicitAny必须为any显式指定类型 -
noImplicitThis检查函数内部的this类型是否显式指定了any -
useUnknownInCatchVariables配置项使得编译时可以自动识别catch语句中捕获的错误变量的类型,而无需为其指定为any或者unknown
这些单独的配置项都可以在compilerOptions单独配置来覆盖strict的配置
baseUrl
baseUrl指定文件模块路径解析的相对基础路径,默认是taconfig.json的目录
paths
paths配置路径别名,相对于baseUrl来解析,例如
"paths": {
"@/*": ["./src/*"]
},
skipLibCheck
skipLibCheck指定是否跳过.d.ts类型定义文件的类型检查,跳过可以提高编译速度。
forceConsistentCasingInFileNames
forceConsistentCasingInFileNames是否强制代码中使用的模块文件名必须和文件系统中的文件名保持大小写一致,例如import fileManager.ts查找指定的fileManager.ts文件而不是FileManager.ts文件。