tsconfig.json详细配置
{
"files": [], /* 指定被编译的文件,路径必须是指定文件,而不是某个文件夹,可以使用相对和绝对路径,而且不能使用* ? **/ 等通配符 */
"include": [], /* 指定被编译文件所在的目录或文件,可以使用相对和绝对路径,而且可以使用通配符,比如"./src"即表示要编译src文件夹下的所有文件以及子文件夹的文件 */
"exclude": [], /* 指定不需要被编译的目录或文件,可以是相对路径或绝对路径,可以使用通配符 */
"extends": "", /* 指定要继承的配置文件,继承的配置会覆盖当前文件定义的配置。TS在3.2版本开始,支持继承一个来自Node.js包的tsconfig.json配置文件 */
"references": [], /* 项目引用,是 TS 3.0 中的一项新功能,它允许将 TS 程序组织成更小的部分。使用小技巧:在填写路径时 ** 表示任意目录, * 表示任意文件。 */
"compilerOptions": {
/* 基本选项 */
"target": "es5", /* 指定编译之后的版本目标,有效值: "ES3", "ES5", "ES6", "ES2015", "ES2016", "ES2017", "ES2018", "ES2019", "ES2020", "ES2021", "ES2022", "ES2023", "ESNext". */,
"module": "commonjs", /* 指定编译后代码使用的模块化规范,有效值: "CommonJS", "AMD", "System", "UMD", "ES6", "ES2015", "ES2020", "ESNext", "None", "ES2022", "Node16", "NodeNext", "Preserve"。 */,
"lib": ["es6", "dom"], /* 指定项目运行时使用的库 */,
"allowJs": true, /* 是否对js文件进行编译,默认:false */
"checkJs": true, /* 是否检查js代码是否符合语法规范,当使用checkJs,必须使用allowJs,默认:false */
"jsx": "preserve", /* 指定jsx代码用于的开发环境,有效值: "preserve", "react", "react-jsx", "react-jsxdev", "react-native"。 */
"declaration": true, /* 是否生成相应的 .d.ts 声明文件,默认:false */
"declarationMap": true, /* 是否为声明文件.d.ts生成map文件,需要declaration或composite配合一起使用,默认:false */
"sourceMap": true, /* 编译时是否生成.map文件 */
"composite": true, /* 是否编译构建引用项目,开启该功能,将会生成被编译文件所在的目录,同时开启declaration、declarationMap和incremental,默认:false*/
"outFile": "./", /* 指定将输出文件合并为一个文件,值为一个文件路径名。默认将所有全局作用域中的代码合并成一个文件。注意,只有设置module的值为amd和system模块时才支持这个配置 */
"outDir": "./", /* 指定编译后文件所在目录 */
"rootDir": "./", /* 指定输入文件的根目录,默认情况下当前的项目目录为根目录 */
"incremental": true, /* 是否启用增量编译,默认:false */
"tsBuildInfoFile": "./", /* 指定增量编译信息文件的位置,使用该功能时,必须开启incremental选项 */
"removeComments": true, /* 是否移除注释,默认:false */
"noEmit": true, /* :不生成编译后的文件,默认:false,一般比较少用 */
"importHelpers": true, /* 是否引入tslib里的辅助函数,默认为false */
"downlevelIteration": true, /* 是否用于转换为旧版本的 JS 提供可迭代对象的全面支持,默认:false */
"isolatedModules": true, /* 是否将每个文件转换为单独的模块,默认:false,不可以和declaration同时设定 */
/* 严格检查选项 */
"strict": true, /* 是否启动所有严格检查的总开关,默认:false,启动后将开启所有的严格检查选项 */,
"noImplicitAny": true, /* 是否禁止隐式的any类型,默认:false */
"strictNullChecks": true, /* 是否启用严格的空检查,默认:false */
"strictFunctionTypes": true, /* 是否启用对函数类型的严格检查,默认:false */
"strictBindCallApply": true, /* 是否在函数上启用严格的’bind’, 'call’和’apply’方法,默认:false */
"strictPropertyInitialization": true, /* 是否启用严格检查类的属性初始化,如果要开启这项,需要同时开启strictNullChecks,默认为false */
"noImplicitThis": true, /* 是否禁止不明确类型的this,默认:false */
"alwaysStrict": true, /* 是否以严格模式解析,并为每个源文件发出"use strict",默认:false */
/* 附加选项 */
"noUnusedLocals": true, /* 是否检查未使用的局部变量,默认:false */
"noUnusedParameters": true, /* 是否检查未使用的参数,默认:false */
"noImplicitReturns": true, /* 检查函数是否不含有隐式返回值,默认:false */
"noImplicitOverride":true, /* 是否检查子类继承自基类时,其重载的函数命名与基类的函数不同步问题,默认:false */
"noFallthroughCasesInSwitch": true, /* 检查switch中是否含有case没有使用break跳出,默认:false */
"noUncheckedIndexedAccess": true, /* 是否通过索引签名来描述对象上有未知键但已知值的对象,默认:false */
"noPropertyAccessFromIndexSignature": true,/* 是否通过" . “(obj.key) 语法访问字段和"索引”( obj[“key”]), 以及在类型中声明属性的方式之间的一致性,默认:false */
/* 模块解析选项 */
"moduleResolution": "node", /* 指定模块解析策略,node或classic */
"baseUrl": "./", /* 用于解析非绝对模块名的基本目录,相对模块不受影响 */
"paths": {}, /* 用于设置模块名称到基于baseUrl的路径映射 */
"rootDirs": [], /* 将多个目录放在一个虚拟目录下,运行编译后文件引入的位置发生改变,也不会报错 */
"typeRoots": [], /* 指定声明文件或文件夹的路径列表,如果指定了此项,则只有在这里列出的声明文件才会被加载 */
"types": [], /* 用来指定需要包含的模块,并将其包含在全局范围内,只有在这里列出的模块的声明文件才会被加载进 */
"allowSyntheticDefaultImports": true, /* 是否允许从没有默认导出的模块中默认导入,默认:false */
"esModuleInterop": true, /* 是否通过为所有导入模块创建命名空间对象,允许CommonJS和ES模块之间的互操作性,开启改选项时,也自动开启allowSyntheticDefaultImports选项,默认:false */,
"preserveSymlinks": true, /* 是否不解析符号链接的真实路径,这是为了在 Node.js 中反映相同的标志,默认:false */
"allowUmdGlobalAccess": true, /* 允许您从模块文件内部访问作为全局变量的 UMD 导出,如果不使用该选项,从 UMD 模块导出需要一个导入声明,默认:false */
/* Map选项 */
"sourceRoot": "", /* 指定调试器应该找到TypeScript文件而不是源文件位置,这个值会被写进.map文件里 */
"mapRoot": "", /* 指定调试器找到映射文件而非生成文件的位置,指定map文件的根路径,该选项会影响.map文件中的sources属性 */
"inlineSourceMap": true, /* 指定是否将map文件的内容和js文件编译在同一个js文件中,如果设为true,则map的内容会以//# sourceMappingURL=然后拼接base64字符串的形式插入在js文件底部 */
"inlineSources": true, /* 是否将 .ts 文件的原始内容作为嵌入字符串包含在 .map 文件中,默认:false */
/* 实验选项 */
"experimentalDecorators": true, /* 是否启用对装饰器的实验性支持,装饰器是一种语言特性,还没有完全被 JavaScript 规范批准,默认:false */
"emitDecoratorMetadata": true, /* 为装饰器启用对发出类型元数据的实验性支持,默认:false */
/* 高级选项 */
"allowUnreachableCode": true, /* 是否允许无法访问的代码(undefined / true / false),默认:undefined,undefined:向编辑提供建议作为警告,true:未使用的标签被忽略,false:引发有关未使用标签的编译器错误 */
"allowUnusedLabels": true, /* 是否允许未使用的标签(undefined / true / false),默认:undefined,默认:undefined,undefined:向编辑提供建议作为警告,true:未使用的标签被忽略,false:引发有关未使用标签的编译器错误 */
"assumeChangesOnlyAffectDirectDependencies": true,/* 是否避免重新检查/重建所有真正可能受影响的文件,而只会重新检查/重建已更改的文件以及直接导入它们的文件,默认:false */
"declarationDir": "./declaration", /* 提供一种方法来配置发出声明文件的根目录 */
"diagnostics": true, /* 用于输出用于调试的诊断信息 */
"disableReferencedProjectLoad": true, /* 是否禁用所有可用项目加载到内存中,默认:false */
"disableSizeLimit": true, /* 为了避免在处理非常大的 JS 项目时可能出现的内存膨胀问题,TS 将分配的内存量有一个上限,默认:false */
"disableSolutionSearching": true, /* 在编辑器中搜索查找所有引用或跳转到定义等功能时,禁止包含复合项目,默认:false */
"disableSourceOfProjectReferenceRedirect": true,/* 是否禁用项目引用源重定向,默认:false */
"emitBOM": true, /* 控制TypeScript在写输出文件时是否发出字节顺序标记(BOM),默认:false */
"emitDeclarationOnly": true, /* 是否只发出.d.ts 文件,不发出.js 文件,使用该选项时,需要配合 declaration 或 composite 一起使用,默认:false */
"explainFiles": true, /* 解释文件,此选项用于调试文件如何成为编译的一部分,默认:false */
"extendedDiagnostics": true, /* 是否查看 TS 在编译时花费的时间,默认:false */
"forceConsistentCasingInFileNames": true,/* 是否区分文件系统大小写规则,默认:false */
"generateCpuProfile": "profile.cpuprofile",/* 这个配置允许编译器生成一个CPU profile,通常在“.cpuprofile”文件格式中,这有助于分析编译性能问题,默认:profile.cpuprofile */
"importsNotUsedAsValues": "preserve", /* 此标志控制如何 import 工作方式,有 3 个不同的选项:remove、preserve 和 error */
"jsxFactory": "React.createElement", /* **当使用jsx时,指定生成JSX元素时使用的工厂函数名称。例如,React应用通常使用React.createElement** */
"jsxFragmentFactory": "", /* 指定 JSX 片段工厂函数在指定了 jsxFactory 编译器选项的情况下针对 react JSX 发出时使用 */
"jsxImportSource": "", /* 当在TS 4.1中使用 jsx 作为 react-jsx 或 react-jsxdev 时,声明用于导入jsx和jsxs工厂函数的模块说明符 */
"listEmittedFiles": true, /* 是否将编译部分生成的文件的名称打印到终端,默认:false */
"listFiles": true, /* 是否打印编译文件部分的名称,默认:false */
"maxNodeModuleJsDepth": 0, /* 在node_modules下搜索并加载JavaScript文件的最大依赖深度,默认:0 */
"newLine": "CRLF", /* 用于指定输出文件中的换行符类型。"CRLF"用于Windows,而"LF"用于Unix / Linux */
"noEmitHelpers": true, /* 是否使用全局作用域助手函数提供实现,并完全关闭助手函数的发出,而不是使用 importhelper 来导入助手函数,默认:false */
"noEmitOnError": true, /* 有错误时不进行编译,默认:false */
"noErrorTruncation": true, /* 是否禁止截断错误消息,已弃用,默认:false */
"noImplicitUseStrict": true, /* 是否禁止无隐式严格模式,默认:false */
"noLib": true, /* 是否禁止自动包含任何库文件,默认:false */
"noResolve": true, /* 是否禁用析后的文件添加到程序中;默认情况下,TS 会检查 import 和 reference 指令的初始文件集,并将这些解析后的文件添加到你的程序中,默认:false */
"noStrictGenericChecks": true, /* 是否禁用严格的泛型检查,默认:false */
"preserveConstEnums": true, /* 是否禁止删除枚举常量生成代码中的声明,默认:false */
"reactNamespace": "", /* React命名空间,使用 jsxFactory 来代替 */
"resolveJsonModule": true, /* 是否解析 JSON 模块,默认:false */
"skipDefaultLibCheck": true, /* 是否跳过默认库(比如lib.d.ts)的类型检查,默认:false */
"skipLibCheck": true, /* 与skipDefaultLibCheck类似,但这个选项会跳过所有声明文件(.d.ts files)的类型检查 */
"stripInternal": true, /* 是否禁止 JSDoc 注释中带有@internal注释的代码发出声明,默认:false */
"suppressExcessPropertyErrors": true, /* 是否禁用报告过多的属性错误,默认:false */
"suppressImplicitAnyIndexErrors": true,/* 是否抑制隐式any索引的错误,默认:false */
"traceResolution": true, /* 当尝试调试未包含模块的原因时。启用该选项让 TypeScript 打印有关每个处理文件的解析过程的信息,默认:false */
"useDefineForClassFields": true, /* 此标志用作迁移到即将推出的类字段标准版本的一部分,默认:false */
}
}