//prettier-ignore(Prettier 格式化忽略标记,用于告诉 Prettier 工具不格式化当前代码块)
{
"compilerOptions": { // 编译器选项:配置 TypeScript 编译器的核心行为
/* 访问 https://aka.ms/tsconfig.json 可查看此文件的更多说明 */
/* 项目相关配置 /
// "incremental": true, / 启用增量编译:仅重新编译修改过的文件,提升编译速度 /
// "composite": true, / 启用项目组合配置:允许当前 TypeScript 项目用于项目引用(project references)功能 /
// "tsBuildInfoFile": "./", / 指定.tsbuildinfo 增量编译文件的存放目录:用于存储增量编译的缓存信息 /
// "disableSourceOfProjectReferenceRedirect": true, / 禁用项目引用时优先使用源文件:引用组合项目时,不优先使用源文件而非声明文件(.d.ts) /
// "disableSolutionSearching": true, / 禁用解决方案搜索:编辑时让项目不参与多项目引用检查,减少资源占用 /
// "disableReferencedProjectLoad": true, / 禁用引用项目自动加载:减少 TypeScript 自动加载的项目数量,提升性能 */
/* 语言与运行环境配置 /
"target": "esnext", / 设置目标 JavaScript 版本:指定生成的 JavaScript 代码兼容的 ECMAScript 版本(esnext 表示最新标准),并包含对应兼容的库声明 /
"lib": ["es2019"], / 指定运行时库声明文件:设置一组内置的库声明文件,描述目标运行环境支持的 API(此处引入 ES2019 标准库) /
"jsx": "react-native", / 指定 JSX 代码生成方式:针对 React Native 框架生成适配的 JSX 代码(区别于 React 的 "react" 模式) /
// "experimentalDecorators": true, / 启用装饰器实验性支持:支持 TC39 提案阶段 2 的装饰器语法(如类装饰器、属性装饰器) /
// "emitDecoratorMetadata": true, / 生成装饰器元数据:在源文件中为带装饰器的声明生成设计时类型元数据,供反射工具使用 /
// "jsxFactory": "", / 指定 JSX 工厂函数:设置目标为 React JSX 输出时使用的工厂函数(如 "React.createElement" 或 "h") /
// "jsxFragmentFactory": "", / 指定 JSX 片段引用:设置目标为 React JSX 输出时使用的片段(Fragment)引用(如 "React.Fragment" 或 "Fragment") /
// "jsxImportSource": "", / 指定 JSX 导入源:使用jsx: react-jsx*模式时,指定导入 JSX 工厂函数的模块标识符 /
// "reactNamespace": "", / 指定 React 命名空间:仅在目标为 "react" JSX 输出时,设置调用createElement的对象 /
// "noLib": true, / 禁用库文件引入:不包含任何库文件(包括默认的 lib.d.ts,需手动引入所需库) /
// "useDefineForClassFields": true, / 使用 ECMAScript 标准类字段:生成符合 ECMAScript 标准的类字段代码(而非 TypeScript 扩展语法) */
/* 模块相关配置 /
"module": "commonjs", / 指定模块代码生成格式:生成符合 CommonJS 模块规范的代码(适用于 Node.js 环境) /
// "rootDir": "./", / 指定源文件根目录:设置项目中源文件的根文件夹,编译器会基于此目录组织输出结构 /
"moduleResolution": "node", / 指定模块解析策略:设置 TypeScript 从模块标识符查找文件的方式("node" 表示遵循 Node.js 的模块解析规则) /
"baseUrl": "./", / 设置模块解析基础目录:解析非绝对路径模块名时的基准目录 /
"paths": { / 模块路径映射:一系列映射规则,将导入路径重定向到相对于 "baseUrl" 的查找位置 /
"resources": ["resources/"], // 将"resources"开头的导入映射到"resources/"目录下的文件(如 import"resources/xxx"→ 查找"resources/xxx")
"": ["src/"], // 将所有其他导入映射到"src/"目录下的文件(如 import"utils/xxx"→ 查找"src/utils/xxx")
},
// "rootDirs": [], /* 模块根目录集合:允许将多个文件夹视为一个整体,用于解析跨文件夹的模块引用 /
"typeRoots": ["node_modules/@types", "@types"], / 指定类型声明根目录:设置多个类似./node_modules/@types的文件夹,用于查找类型声明文件(.d.ts) /
"types": ["react-native", "jest"], / 指定默认引入的类型包:无需在源文件中引用,即可自动包含的类型包(此处引入 React Native 和 Jest 的类型) /
// "allowUmdGlobalAccess": true, / 允许访问 UMD 模块全局变量:从模块中直接访问 UMD(通用模块定义)模块暴露的全局变量 /
"resolveJsonModule": true, / 启用 JSON 模块导入:允许导入.json 文件(TypeScript 会自动生成对应的类型声明) /
// "noResolve": true, / 禁用模块解析扩展:不允许import、require或<reference>引入额外的文件到项目中 */
/* JavaScript 支持配置 /
"allowJs": true, / 允许包含 JavaScript 文件:将.js 文件纳入项目编译范围,结合checkJS可对其进行类型检查 /
// "checkJs": true, / 启用 JavaScript 类型检查:对纳入项目的.js 文件进行类型错误检测(需配合 "allowJs": true 使用) /
// "maxNodeModuleJsDepth": 1, / 设置 Node 模块 JS 文件检查深度:仅对node_modules中深度为 1 的.js 文件进行检查(仅在 "allowJs" 启用时生效) */
/* 输出相关配置 /
// "declaration": true, / 生成类型声明文件:从 TypeScript 和 JavaScript 文件中生成.d.ts 类型声明文件,供其他项目引用 /
// "declarationMap": true, / 生成类型声明源映射:为.d.ts 文件创建源映射(.d.ts.map),便于调试时关联源文件 /
// "emitDeclarationOnly": true, / 仅生成类型声明文件:不输出 JavaScript 文件,只生成.d.ts 文件 /
// "sourceMap": true, / 生成源映射文件:为输出的 JavaScript 文件创建源映射(.map),便于调试时关联 TypeScript 源文件 /
// "outFile": "./", / 指定合并输出文件:将所有输出打包到一个 JavaScript 文件中;若 "declaration": true,也会打包.d.ts 文件 /
// "outDir": "./", / 指定输出目录:设置所有编译生成文件(JS、d.ts、map 等)的存放文件夹 /
// "removeComments": true, / 移除注释:不在输出文件中保留源文件的注释 /
"noEmit": true, / 禁用文件输出:编译时仅进行类型检查,不生成任何文件(常用于仅需类型校验的场景) /
// "importHelpers": true, / 导入辅助函数:从 tslib 库中导入辅助函数(如__extends),而非在每个文件中重复生成,减少代码体积 /
// "importsNotUsedAsValues": "remove", / 设置未使用导入的处理方式:指定对仅用于类型的导入的编译 / 检查行为("remove" 表示移除未使用的类型导入) /
// "downlevelIteration": true, / 降级迭代器实现:生成兼容性更强但更冗长、性能略低的迭代器代码(适配不支持 ES6 + 迭代器的环境) /
// "sourceRoot": "", / 指定源文件根路径:供调试器查找引用源文件的根路径 /
// "mapRoot": "", / 指定源映射根路径:供调试器查找源映射文件的路径(而非默认的生成路径) /
// "inlineSourceMap": true, / 嵌入源映射到 JS 文件:将源映射信息直接包含在输出的 JavaScript 文件中,不单独生成.map 文件 /
// "inlineSources": true, / 嵌入源文件到源映射:将 TypeScript 源文件内容包含在源映射中(需配合 sourceMap 或 inlineSourceMap 使用) /
// "emitBOM": true, / 生成 UTF-8 BOM 头:在输出文件开头添加 UTF-8 字节顺序标记(BOM),确保编码识别 /
// "newLine": "crlf", / 设置换行符格式:指定输出文件使用的换行符("crlf" 为 Windows 格式,"lf" 为 Unix/Linux 格式) /
// "stripInternal": true, / 移除内部声明:不生成包含@internalJSDoc 注释的声明(标记为内部使用的 API 不对外暴露) /
// "noEmitHelpers": true, / 禁用辅助函数生成:不自动生成__extends 等自定义辅助函数(需手动引入 tslib 或自行实现) /
// "noEmitOnError": true, / 错误时禁止输出:若存在类型检查错误,不生成任何输出文件 /
// "preserveConstEnums": true, / 保留 const 枚举:不在生成的代码中删除const enum声明(默认会将 const 枚举替换为具体值) /
// "declarationDir": "./", / 指定类型声明输出目录:单独设置.d.ts 类型声明文件的存放文件夹 /
// "preserveValueImports": true, / 保留未使用的值导入:不删除仅用于值引用(非类型引用)的未使用导入(避免副作用丢失) */
/* 互操作约束配置 /
"isolatedModules": true, / 启用独立模块检查:确保每个文件可安全转译,不依赖其他导入(符合 ES 模块规范,适配 Babel 等工具) /
"allowSyntheticDefaultImports": true, / 允许合成默认导入:当模块没有显式默认导出时,允许使用import x from y的默认导入语法(仅类型层面支持) /
"esModuleInterop": true, / 启用 ES 模块与 CommonJS 互操作:生成额外的 JavaScript 代码,简化 CommonJS 模块的 ES 模块导入适配,同时自动启用allowSyntheticDefaultImports /
// "preserveSymlinks": true, / 保留符号链接:不将符号链接解析为真实路径(与 Node.js 的同名 flag 行为一致) /
"forceConsistentCasingInFileNames": true, / 强制文件名大小写一致:确保导入时的文件名大小写与实际文件匹配(避免跨系统大小写问题) */
/* 类型检查配置 /
"strict": true, / 启用严格类型检查:一次性开启所有严格模式下的类型检查选项(等同于开启下方所有带 "strict" 前缀的选项) /
// "noImplicitAny": true, / 禁止隐式 any 类型:对隐含any类型的表达式和声明报错(强制显式指定类型) /
// "strictNullChecks": true, / 严格空值检查:类型检查时考虑null和undefined(需显式处理空值,避免空指针错误) /
// "strictFunctionTypes": true, / 严格函数类型检查:赋值函数时,强制参数和返回值类型完全 subtype(子类型)兼容 /
// "strictBindCallApply": true, / 严格 Bind/Call/Apply 检查:确保bind、call、apply方法的参数与原函数匹配 /
// "strictPropertyInitialization": true, / 严格属性初始化检查:检查类中声明但未在构造函数中初始化的属性(需配合constructor赋值或使用非空断言) /
// "noImplicitThis": true, / 禁止隐式 this 类型:对this被推断为any类型的情况报错(强制明确this类型) /
// "useUnknownInCatchVariables": true, / Catch 变量使用 unknown 类型:将 catch 语句中的变量类型设为unknown(而非any,需显式类型断言后使用) /
// "alwaysStrict": true, / 始终启用严格模式:在所有输出的 JavaScript 文件顶部添加"use strict" /
// "noUnusedLocals": true, / 禁止未使用局部变量:对未被读取的局部变量报错(清理无用代码) /
// "noUnusedParameters": true, / 禁止未使用函数参数:对未被读取的函数参数报错(优化函数定义) /
// "exactOptionalPropertyTypes": true, / 严格可选属性类型:按字面量解析可选属性类型(不自动添加undefined,如{ x?: number }仅匹配{}或{ x: number }) /
// "noImplicitReturns": true, / 禁止隐式返回:对函数中未显式返回的代码路径报错(确保函数所有分支都有返回值) /
// "noFallthroughCasesInSwitch": true, / 禁止 Switch 穿透:对 switch 语句中未使用break/return的穿透 case 报错(避免逻辑错误) /
// "noUncheckedIndexedAccess": true, / 严格索引访问检查:在索引签名结果中包含undefined(如arr[0]类型为T | undefined,强制处理越界情况) /
// "noImplicitOverride": true, / 禁止隐式重写:子类重写父类方法时,必须显式添加override修饰符(避免意外重写) /
// "noPropertyAccessFromIndexSignature": true, / 禁止通过索引签名访问属性:强制对索引类型声明的键使用索引访问器(如obj[key]而非obj.key) /
// "allowUnusedLabels": true, / 允许未使用标签:不对未使用的语句标签(label)报错 /
// "allowUnreachableCode": true, / 允许不可达代码:不对无法执行到的代码(如return后的代码)报错 */
/* 完整性配置 /
// "skipDefaultLibCheck": true, / 跳过默认库检查:不检查 TypeScript 自带的默认库文件(如 lib.d.ts,提升编译速度) /
"skipLibCheck": true / 跳过所有库类型检查:不检查项目中所有的.d.ts 类型声明文件(提升编译速度,适用于确认库类型无冲突的场景) */
},
"exclude": [ // 排除文件 / 目录:指定不纳入 TypeScript 编译和类型检查的文件或目录
"node_modules",
"babel.config.js",
"metro.config.js",
"jest.config.js"
//node_modules:第三方依赖目录;babel.config.js:Babel 配置文件;metro.config.js:React Native 打包工具配置文件;jest.config.js:Jest 测试框架配置文件
]
}
网友评论