tsconfig.json 文件是 TypeScript 项目中的核心配置文件,它用于定义和控制 TypeScript 编译器的行为。通过这个文件,你可以指定编译选项、源文件路径、输出目录以及许多其他与编译过程相关的设置。以下是 tsconfig.json 文件中一些常见配置项的解释:
- compilerOptions:这是 tsconfig.json 文件中最主要的部分,用于设置 TypeScript 编译器的选项。例如:
-
- target:指定要生成的 JavaScript 代码的目标版本,如 es5、es6、es2017 等。
- module:指定模块系统,如 commonjs、amd、esnext 等。
- outDir:指定编译后的 JavaScript 文件输出目录。
- sourceMap:启用或禁用源映射,用于在编译后的代码中保留原始 TypeScript 文件的行号和列号。
- strict:启用严格类型检查,包括 noImplicitAny、strictNullChecks 等。
- esModuleInterop:启用 ES 模块互操作性,允许在 CommonJS 模块中使用 ES 模块。
- include:指定哪些文件应该被包含在编译过程中。例如,你可以指定所有 .ts 和 .tsx 文件。
- exclude:指定哪些文件或目录应该被排除在编译过程之外。例如,你可以排除 node_modules 目录。
- files:列出要编译的文件,这通常用于较小的项目,对于大型项目,include 和 exclude 更常用。
- extends:允许你继承另一个 tsconfig.json 文件的设置,这对于大型项目或具有多个子项目的项目非常有用。
- references:用于引用其他 tsconfig.json 文件,这在大型项目中很有用,可以将项目拆分为多个可独立编译的模块。
通过 tsconfig.json 文件,你可以确保 TypeScript 代码以一致的方式编译,同时还可以根据项目需求定制编译行为,提高代码质量和开发效率。
常用tsconfig配置
{
"compilerOptions": {
"module": "esNext", // 指定生成的模块系统
"target": "ESNext", // 指定编译目标的ECMAScript版本
"jsx": "react-jsx", // 指定JSX代码生成器
"moduleResolution": "node", // 指定模块解析策略
"alwaysStrict": true, // 始终使用严格模式
"sourceMap": false, // 生成相应的.map文件
"allowSyntheticDefaultImports": true, // 允许从没有默认导出的模块中默认导入
"removeComments": false, // 删除注释
"preserveConstEnums": true, // 保留const枚举
"experimentalDecorators": true, // 允许使用实验性的装饰器特性
"noImplicitReturns": true, // 禁止隐式返回any类型
"noUnusedLocals": true, // 禁止未使用的局部变量
"noUnusedParameters": false, // 禁止未使用的参数
"noImplicitAny": false, // 禁用隐式any类型
"noImplicitThis": false, // 禁止隐式this类型
"resolveJsonModule": true, // 允许从json模块中导入内容
"outDir": "lib", // 指定输出目录
"rootDir": "./", // 指定根目录
"baseUrl": ".", // 指定根目录,用于确定TypeScript输入文件的相对位置
"paths": {
"@/*": [
"./src/*"
],
"ice": [
".ice"
]
} // 指定路径别名
},
"include": [
"src/**/*" // 包含src目录下的所有文件
],
"exclude": [
"node_modules", // 排除node_modules目录
"**/*.spec.ts" // 排除所有的测试文件
]
}
如果构建时未使用变量报错
这是因为ts中开启了严格模式,找到tsconfig.json文件
"strict": true, // 开启严格模式,检查类型声明和赋值...是否合法
"noUnusedLocals": true, // 检查是否存在未使用的变量
"noUnusedParameters": true, // 检查是否存在会使用的函数参数
"noFallthroughCasesInSwitch": true, // 检查switch语句中是否存在break
修改解决:按照对应的需求修改为false就可以了
"strict": true,
"noUnusedLocals": false,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true