-
Notifications
You must be signed in to change notification settings - Fork 0
Description
{
"compilerOptions": {
"allowUnreachableCode": false, // 报告执行不到的代码错误。
"allowUnusedLabels": false, // 报告未使用局部变量的错误。
"noUnusedParameters": false, // 报告未使用参数的错误。
"noImplicitReturns": false, // 当函数中并非所有代码路径都返回值时报告错误。
"noFallthroughCasesInSwitch": false, // 在switch语句中报告错误。
"alwaysStrict": false, // 以严格模式解析并为每个源文件生成 "use strict" 语句。
"experimentalDecorators": true, // 支持对 ES7 decorator 的实验支持。
"emitDecoratorMetadata": true, // 启用了对为 decorator 发出类型元数据的实验性支持。reflect-metadata
"noImplicitAny": false, // 对隐含的“any”类型的表达式和声明提出错误。
"strictNullChecks": false, // 启用严格的空检查。
"strictFunctionTypes": false, // 启用对函数类型的严格检查。
"noImplicitThis": false, // 对包含“any”类型的“this”表达式提出错误。
"noImplicitAny": false, // 对隐含的“any”类型的表达式和声明提出错误。
"allowSyntheticDefaultImports": true, // 允许从没有默认导出的模块进行默认导入。这并不影响代码发出,只影响类型查询。
"esModuleInterop":true, // 通过为所有导入创建名称空间对象,支持CommonJS和ES模块之间的互操作性。意味着 “allowSyntheticDefaultImports”。
"resolveJsonModule": true, // 支持 import x from 'x.json'
"strictPropertyInitialization": true, // 在类中启用严格的属性初始化检查。
"preserveConstEnums": true, // 保留 const enum 声明。
"removeComments": true, // 是否移除注释
"jsx": "react", // 在 .tsx 文件里支持 JSX,指定jsx代码生成:“preserve”、“response -native”或“react”。
"sourceMap": true, // 是否生成 map 文件
"baseUrl": "./src", // 工作根目录
"paths": {
"client": [ // 指定后可以在文件之直接 import * from 'client/x';
"./src/client"
],
},
"types": [
"node", // 仅引入 node 的类型声明。编译其他的引用 type 会报错。
],
"target": "es6", // 指定ECMAScript目标版本:“ES3”(默认)、“es5”、“ES2015”、“ES2016”、“ES2017”、“ES2018”或“ESNEXT”。
"module": "commonjs", // 指定模块代码生成:“none”、“commonjs”、“amd”、“system”、“umd”、“es2015”或“ESNext”。
"outDir": "./dist", // 输出目录
"declaration": true, // 是否自动创建类型声明文件
"declarationDir": "./lib", // 类型声明文件的输出目录
"allowJs": false, // “使用默认”,允许编译 javascript 文件
"lib": [ // 编译过程中需要引入的库文件的列表
"es5",
"es2015",
"es2016",
"es2017",
"es2018",
"dom"
]
},
// 指定一个匹配列表(属于自动指定该路径下的所有ts相关文件)
"include": [
"src/**/*"
],
// 指定一个排除列表(include的反向操作)
"exclude": [
"demo.ts"
],
// 指定哪些文件使用该配置(属于手动一个个指定文件)
"files": [
"demo.ts"
]
}
compilerOptions
编译选项:只在 ts 被编译时生效。执行 'tsc' 命令生效。
PS: 目前,packing 是没有执行 tsc 命令,仅使用 babel 进行了 typescript 编码,所以,项目文件 tsconfig.json 中 compilerOptions 并没有作用。
experimentalDecorators, emitDecoratorMetadata
是否支持使用装饰器语法,是否启用反射。nest 框架需要开启。
参考:https://www.cnblogs.com/Answer1215/p/5574234.html
allowSyntheticDefaultImports, esModuleInterop
是否支持 Commonjs 模块使用 ES6 模块方式 import 。
参考:https://blog.csdn.net/juzipidemimi/article/details/103438437
types, typeRoots
types: 指定引入的类型声明文件,默认是自动引入所有声明文件,一旦指定该选项,则会禁用自动引入,改为只引入指定的类型声明文件,如果指定空数组[]则不引用任何文件。
typeRoots: 和 types 类似,指定类型声明文件的路径。
注意:只影响编译 tsc 查找类型定义。
// 编写代码过程不会报错,进行了全局声明
declare global {
namespace NodeJS {
interface Process {
noDeprecation: boolean;
}
}
}
process.noDeprecation = true;
console.log(process.noDeprecation);
// tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": true,
"outDir": "./dist",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"types": []
}
}
paths
指定模块的路径,和 baseUrl 有关联,和 webpack 中 resolve.alias 配置一样
preserveConstEnums
参考:https://www.jianshu.com/p/b56114bc2706
lib
编译时,可以引入的库。比如:String.prototype.padEnd 方法,比较新,如果指定,需要相应列出。
files, include, exclude
表名 ts 管理的文件,vscode 当做 ts 文件处理。优先级 files > exclude > include 。
extends
配置扩展,根据环境配置不同的编译参数。tsconfig.build.json