用于控制 TypeScript 编译器如何将 .ts 文件编译为 .js 文件
可以使用命令生成
npx tsc --init
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"strict": true
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules"]
}
- include:指定需要被 TypeScript 编译器处理的文件或目录
- exclude:指定不需要被 TypeScript 编译器处理的文件或目录
- compilerOptions:配置 TypeScript 编译器的行为,比如指定编译目标版本、模块系统、是否开启严格模式等。
compilerOptions
target
指定编译后的 JavaScript 版本,常见的值有 ES3、ES5、ES6(或 ES2015)、ES2016 等,版本越低,兼容性越强,常用 ES5
lib
指定编译过程中需要包含的库文件,比如 ES5、DOM、ESNext 等。如果你使用了 Promise 等 ES6+ 的特性,可能需要包含 ES2015.Promise。
"lib": ["ES2015.Promise", "DOM"]
module
指定生成的模块系统,常见的值有 commonjs、amd、esnext 等。如果你的项目是 Node.js 项目,通常使用 commonjs,现代项目常用 ESNext。
moduleResolution
指定模块解析策略,可选值有 node 和 classic,一般使用 node。
strict(推荐 true)
(值为 true 或 false )开启所有严格类型检查选项,包括 noImplicitAny、strictNullChecks 等,建议开启以提高代码的健壮性。
noImplicitAny
(值为 true 或 false )不允许隐式的 any 类型,即所有变量和函数参数都必须明确指定类型。
strictNullChecks
(值为 true 或 false )开启严格的空值检查,避免使用可能为 null 或 undefined 的值而不进行检查。
outDir
指定编译后的文件输出目录。
rootDir
指定编译文件的根目录,编译器会根据这个目录来确定输出文件的目录结构。
declaration(推荐 true)
(值为 true 或 false )指定 TypeScript 编译器在编译过程中是否生成对应的类型声明文件(.d.ts 文件)
extends
如果你有多个 TypeScript 项目,并且希望共享一些通用的配置,可以使用 extends 字段。它允许你继承另一个 tsconfig.json 文件的配置。
"extends": "./base-tsconfig.json",
files
指定需要编译的具体文件列表,它和 include 的区别在于,files 是指定具体的文件路径,而 include 是使用 glob 模式匹配文件。
"files": ["src/main.ts", "src/utils.ts"]
其他相关知识
tsconfig.node.json 文件,是项目在 node 环境中运行的 Typescript 配置文件
实战范例
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"lib": ["ES2015", "DOM"],
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist",
"rootDir": "./src"
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules"]
}