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
文件。