本文详细解析TypeScript项目中的tsconfig.json配置文件,涵盖compilerOptions下的关键编译选项。重点介绍target、module、lib等基础配置,以及strict系列严格检查选项(如strictNullChecks、noImplicitAny)的作用。同时解析模块解析策略、路径映射、装饰器支持及文件包含排除规则,帮助开发者优化TypeScript构建流程。
前言
在TypeScript项目开发过程中,tsconfig.json是不可或缺的核心配置文件。为了便于后续查阅与复用,本文整理了一份详细的tsconfig.json配置说明,供开发者参考。

compilerOptions编译选项
target用于指定编译后的JavaScript版本目标,例如ES5、ES6等,决定了代码兼容的运行时环境。
"target": "es5",module用来指定要使用的模块加载标准,如CommonJS、ESNext等,影响模块导入导出的行为。
"module": "commonjs",lib用于指定编译过程中需要包含的库文件定义,例如es6、dom等,确保类型检查覆盖所需的API。
"lib":[
"es6",
"dom"
],allowJs用来指定是否允许编译JavaScript文件,默认值为false,即不处理JS文件;设为true后可纳入编译范围。
"allowJs": true,checkJs用来指定是否对JavaScript文件进行类型检查并报告错误,默认值为false,开启后可提升JS代码的类型安全性。
"checkJs": true,指定jsx代码用于的开发环境,可选值包括'preserve'、'react-native'或'react',用于控制JSX语法的处理方式。
"jsx": "preserve",declaration用来指定是否在编译时生成对应的.d.ts声明文件。若设为true,每个TS文件编译后会生成一个JS文件和一个声明文件。注意:declaration和allowJs不能同时设为true。
"declaration": true,declarationMap用来指定编译时是否生成声明文件的.map文件,便于在IDE中跳转到声明定义。
"declarationMap": true,sourceMap用来指定编译时是否生成.sourceMap文件,用于调试时将编译后的代码映射回原始TS源码。
"sourceMap": true,outFile用于指定将所有输出文件合并为一个文件。该配置仅在module设置为amd或system时有效。
"outFile": "./",outDir用来指定输出文件夹的路径字符串,所有编译生成的文件都将放置在该文件夹中。
"outDir": "./",rootDir用来指定编译文件的根目录,编译器会在此目录下查找入口文件,并据此计算输出文件的相对路径。
"rootDir": "./",composite是否编译构建引用项目,设为true时启用项目引用功能,支持增量编译。
"composite": true,removeComments用于指定是否删除编译后文件中的注释,设为true则删除,默认为false。
"removeComments": true,noEmit不生成编译文件,仅进行类型检查,适用于仅需验证类型而不需输出JS的场景。
"noEmit": true,importHelpers指定是否引入tslib库中的辅助函数,如__extends等,默认为false。
"importHelpers": true,当target为ES5或ES3时,downlevelIteration用于为for-of、spread和destructuring中的迭代器提供完全支持。
"downlevelIteration": true,isolatedModules指定是否将每个文件作为独立的模块处理,默认为true。此选项与declaration不能同时设定。
"isolatedModules": true,strict用于启动所有类型检查,设为true时会同时开启以下严格检查项,默认为false。
"strict": true,noImplicitAny若设为true,当未明确指定类型时,编译器会将隐式any视为错误,默认值为false。
"noImplicitAny": true,strictNullChecks当设为true时,null和undefined不能赋值给非这两种类型的变量,反之亦然(any类型除外),且undefined可赋值给void类型。
"strictNullChecks": true,strictFunctionTypes用来指定是否使用函数参数双向协变检查,增强函数类型的严格性。
"strictFunctionTypes": true,strictBindCallApply设为true后,对bind、call和apply方法的参数检测将变得严格。
"strictBindCallApply": true,strictPropertyInitialization设为true后,会检查类的非undefined属性是否在构造函数中初始化。开启此项需同时开启strictNullChecks,默认为false。
"strictPropertyInitialization": true,当this表达式的类型为any时,生成错误,防止this类型丢失。
"noImplicitThis": true,alwaysStrict指定始终以严格模式检查每个模块,并在编译后的JS文件中添加'use strict'字符串,告知浏览器使用严格模式。
"alwaysStrict": true,noUnusedLocals用于检查是否定义了但未使用的局部变量,默认值为false。建议配合ESLint在编码时提示。
"noUnusedLocals": true,noUnusedParameters用于检测函数中未使用的参数,默认值为false。
"noUnusedParameters": true,noImplicitReturns用于检查函数是否所有路径都有返回值,设为true后,若函数缺少返回值会提示错误,默认为false。
"noImplicitReturns": true,noFallthroughCasesInSwitch用于检查switch语句中case是否使用break跳出,防止意外穿透,默认为false。
"noFallthroughCasesInSwitch": true,moduleResolution用于选择模块解析策略,可选值为'node'或'classic'。
"moduleResolution": "node",baseUrl用于设置解析非相对模块名称的基本目录,相对模块不受此选项影响。
"baseUrl": "./",paths用于设置模块名到基于baseUrl的路径映射,支持别名导入。
"paths": {
"*":["./node_modules/@types", "./typings/*"]
},rootDirs可以指定一个路径列表,构建时编译器会将这些路径中的内容合并到一个文件夹中。
"rootDirs": [],typeRoots用来指定声明文件或文件夹的路径列表。若指定此项,仅加载列出的声明文件。
"typeRoots": [],types用于指定需要包含的模块类型声明,仅加载在此列出的模块的声明文件。
"types": [],allowSyntheticDefaultImports用来指定允许从没有默认导出的模块中默认导入。
"allowSyntheticDefaultImports": true,esModuleInterop通过创建命名空间,实现CommonJS和ES模块之间的互操作性,简化跨模块导入。
"esModuleInterop": true,preserveSymlinks不把符号链接解析为真实路径,具体行为可参考webpack和node.js的symlink相关知识。
"preserveSymlinks": true,sourceRoot用于指定调试器查找TypeScript源文件的位置,该值会写入.map文件中。
"sourceRoot": "",mapRoot用于指定调试器查找映射文件而非生成文件的位置,影响.map文件中的sources属性。
"mapRoot": "",inlineSourceMap指定是否将map文件内容嵌入到同一个JS文件中。设为true后,map内容以base64字符串形式插入在JS文件底部。
"inlineSourceMap": true,inlineSources用于指定是否将TS源文件内容也嵌入到输出文件中,便于调试。
"inlineSources": true,experimentalDecorators用于指定是否启用实验性的装饰器特性。
"experimentalDecorators": true,emitDecoratorMetadata用于指定是否为装饰器提供元数据支持,关于元数据,也是ES6的新标准,可以通过Reflect提供的静态方法获取元数据,如果需要使用Reflect的一些方法,需要引用ES2015.Reflect这个库
"emitDecoratorMetadata": true,include也可以指定要编译的路径列表,支持通配符。
"include":[],files可以配置一个具体的文件数组列表,指定需要编译的文件。
"files":[],exclude表示要排除的不编译的文件或文件夹,支持通配符,规则与include类似。
"exclude":[]extends可以通过指定其他tsconfig.json文件路径来继承配置,继承的配置会覆盖当前文件的同名配置。
"extends":""compileOnSave如果设为true,保存项目文件时编辑器会根据tsconfig.json配置重新生成文件,但需编辑器支持。
"compileOnSave":truereferences是一个对象数组,指定要引用的项目,用于多项目构建。
"references":[]以上就是tsconfig.json配置选项使用的详细解析,更多关于tsconfig.json配置选项的资料请关注本站其它相关文章!