Typescript 【详解】配置文件 tsconfig.json

用于控制 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"]
}