当前位置: 首页 > article >正文

15. tsconfig.json 配置详解

15. tsconfig.json 配置详解1. 概述tsconfig.json是 TypeScript 项目的核心配置文件用于指定编译选项、文件包含/排除规则、项目引用等。正确配置 tsconfig.json 是 TypeScript 项目工程化的基础。┌─────────────────────────────────────────────────────────────┐ │ tsconfig.json 配置体系 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 顶层配置 │ │ ├── compilerOptions编译选项 │ │ ├── include包含的文件模式 │ │ ├── exclude排除的文件模式 │ │ ├── files显式指定的文件列表 │ │ ├──extends继承其他配置文件 │ │ ├── references项目引用 │ │ └── watchOptions监听选项 │ │ │ │ 编译选项分类 │ │ ├── 基本选项target、module、lib │ │ ├── 严格模式strict、noImplicitAny 等 │ │ ├── 模块解析moduleResolution、paths、baseUrl │ │ ├── 输出控制outDir、rootDir、declaration │ │ ├── 互操作性esModuleInterop、allowSyntheticDefaultImports│ │ ├── 类型检查noUnusedLocals、noUnusedParameters │ │ └── 源映射sourceMap、inlineSourceMap │ │ │ └─────────────────────────────────────────────────────────────┘2. 生成 tsconfig.json# 生成默认配置tsc--init# 生成带注释的配置文件tsc--init--showConfig# 使用特定模板tsc--init--targetes2020--modulecommonjs3. 顶层配置3.1 基础结构{compilerOptions:{// 编译选项},include:[src/**/*],exclude:[node_modules,dist],files:[],extends:./base.json,references:[],watchOptions:{}}3.2 include 和 exclude{// 包含所有 src 下的 TypeScript 文件include:[src/**/*],// 排除 node_modules 和 dist 目录exclude:[node_modules,dist,**/*.test.ts],// 显式指定文件优先级最高files:[src/index.ts,src/types/global.d.ts]}3.3 extends 继承// base.json{compilerOptions:{strict:true,target:ES2020,module:ESNext}}// tsconfig.json{extends:./base.json,compilerOptions:{outDir:./dist,rootDir:./src},include:[src/**/*]}3.4 watchOptions 监听选项{watchOptions:{// 监听文件变化的方式watchFile:useFsEvents,watchDirectory:useFsEvents,fallbackPolling:dynamicPriority,synchronousWatchDirectory:true,excludeDirectories:[**/node_modules,**/dist]}}4. 基本编译选项4.1 target目标版本{compilerOptions:{// 编译目标 JS 版本// 可选ES3、ES5、ES6/ES2015、ES2016、ES2017、ES2018、ES2019、ES2020、ES2021、ES2022、ESNexttarget:ES2020}}4.2 module模块系统{compilerOptions:{// 模块系统// 可选none、commonjs、amd、umd、system、es6/es2015、es2020、es2022、esnext、node16、nodenextmodule:commonjs,// Node.js 项目// module: ESNext, // 前端项目// 模块解析策略moduleResolution:node,// 输出目录outDir:./dist,// 源码目录rootDir:./src,// 基础路径baseUrl:.,// 路径映射paths:{/*:[src/*],components/*:[src/components/*]}}}4.3 lib库文件{compilerOptions:{// 包含的库文件lib:[ES2020,DOM,DOM.Iterable]// 常用组合// 前端项目[ESNext, DOM, DOM.Iterable]// Node.js[ESNext]// 仅 ES[ES2020]}}5. 严格模式配置5.1 strict 家族{compilerOptions:{// 开启所有严格检查推荐strict:true,// 禁止隐式 anynoImplicitAny:true,// 严格 null 检查strictNullChecks:true,// 严格函数类型strictFunctionTypes:true,// 严格 bind/call/applystrictBindCallApply:true,// 严格属性初始化strictPropertyInitialization:true,// 禁止隐式 thisnoImplicitThis:true,// catch 变量类型为 unknownuseUnknownInCatchVariables:true,// 始终严格检查alwaysStrict:true}}5.2 单独配置示例{compilerOptions:{// 不开启全局严格模式strict:false,// 只开启部分检查noImplicitAny:true,strictNullChecks:true,noImplicitThis:true}}6. 输出控制6.1 基本输出配置{compilerOptions:{// 输出目录outDir:./dist,// 源码目录rootDir:./src,// 单个输出文件outFile:./dist/bundle.js,// 删除注释removeComments:true,// 不生成输出只做类型检查noEmit:false,// 错误时仍输出noEmitOnError:false,// 生成声明文件declaration:true,// 声明文件输出目录declarationDir:./types,// 生成声明映射文件declarationMap:true,// 生成源映射sourceMap:true,// 内联源映射inlineSourceMap:false,// 内联源码inlineSources:true}}6.2 增量编译{compilerOptions:{// 启用增量编译incremental:true,// 增量编译信息文件tsBuildInfoFile:./.tsbuildinfo,// 诊断信息diagnostics:true,// 扩展诊断信息extendedDiagnostics:false}}7. 模块解析配置7.1 路径映射{compilerOptions:{// 基础路径baseUrl:.,// 路径映射paths:{/*:[src/*],components/*:[src/components/*],utils/*:[src/utils/*],services/*:[src/services/*],types/*:[src/types/*]},// 允许默认导入allowSyntheticDefaultImports:true,// ES 模块互操作esModuleInterop:true,// 解析 JSON 模块resolveJsonModule:true,// 允许导入 JS 文件allowJs:true,// 检查 JS 文件类型checkJs:false}}7.2 模块解析策略{compilerOptions:{// 模块解析策略// classic传统 TypeScript 解析// nodeNode.js 解析// bundler打包器解析TS 5.0// nodenextNode.js 最新解析moduleResolution:node,// 解析非相对模块的基础路径baseUrl:.,// 路径映射paths:{*:[node_modules/*,src/types/*]},// 根路径rootDirs:[src,generated],// 类型根路径typeRoots:[./node_modules/types,./src/types],// 类型包名types:[node,jest,express]}}8. 类型检查选项8.1 代码质量检查{compilerOptions:{// 未使用的局部变量报错noUnusedLocals:true,// 未使用的参数报错noUnusedParameters:true,// 检查函数是否有隐含返回值noImplicitReturns:true,// 检查 switch 语句是否遗漏 casenoFallthroughCasesInSwitch:true,// 检查未使用的标签noUnusedLabels:true}}8.2 其他检查选项{compilerOptions:{// 禁止使用 anynoImplicitAny:true,// 禁止使用 any[]需要明确类型noImplicitAny:true,// 强制文件名大小写一致forceConsistentCasingInFileNames:true,// 跳过库类型检查skipLibCheck:true,// 跳过类型检查skipDefaultLibCheck:false}}9. 项目引用9.1 配置项目引用// tsconfig.base.json基础配置{compilerOptions:{composite:true,declaration:true,declarationMap:true,incremental:true}}// tsconfig.json根配置{files:[],references:[{path:./packages/core},{path:./packages/utils},{path:./packages/api},{path:./apps/web},{path:./apps/admin}]}// packages/core/tsconfig.json{extends:../../tsconfig.base.json,compilerOptions:{outDir:./dist,rootDir:./src},include:[src/**/*]}9.2 构建项目引用# 构建所有项目tsc--build# 构建特定项目tsc--buildpackages/core# 清理构建tsc--build--clean# 强制构建tsc--build--force10. 完整配置示例10.1 Node.js 项目配置{compilerOptions:{// 基本配置target:ES2020,module:commonjs,lib:[ES2020],outDir:./dist,rootDir:./src,// 严格模式strict:true,noImplicitAny:true,strictNullChecks:true,// 模块解析moduleResolution:node,esModuleInterop:true,allowSyntheticDefaultImports:true,resolveJsonModule:true,// 输出declaration:true,declarationMap:true,sourceMap:true,removeComments:true,// 检查noUnusedLocals:true,noUnusedParameters:true,noImplicitReturns:true,forceConsistentCasingInFileNames:true,// 其他skipLibCheck:true,incremental:true},include:[src/**/*],exclude:[node_modules,dist,**/*.test.ts]}10.2 React 项目配置{compilerOptions:{// 基本配置target:ES2020,module:ESNext,lib:[ES2020,DOM,DOM.Iterable],jsx:react-jsx,outDir:./dist,rootDir:./src,// 严格模式strict:true,// 模块解析moduleResolution:bundler,allowSyntheticDefaultImports:true,esModuleInterop:true,resolveJsonModule:true,// 路径映射baseUrl:.,paths:{/*:[src/*],components/*:[src/components/*],hooks/*:[src/hooks/*],utils/*:[src/utils/*]},// 输出sourceMap:true,// 检查noUnusedLocals:true,noUnusedParameters:true,forceConsistentCasingInFileNames:true,// 其他skipLibCheck:true},include:[src/**/*],exclude:[node_modules,dist]}10.3 库项目配置{compilerOptions:{// 基本配置target:ES2020,module:ESNext,lib:[ES2020],declaration:true,declarationMap:true,outDir:./dist,rootDir:./src,// 严格模式strict:true,// 模块解析moduleResolution:node,esModuleInterop:true,// 输出sourceMap:true,removeComments:false,// 检查noUnusedLocals:true,noUnusedParameters:true,forceConsistentCasingInFileNames:true,// 其他skipLibCheck:true},include:[src/**/*],exclude:[node_modules,dist,**/*.test.ts]}11. 常用配置组合项目类型targetmodulelib其他关键配置Node.jsES2020commonjsES2020esModuleInteropReactES2020ESNextES2020, DOMjsx: react-jsxVueES2020ESNextES2020, DOM使用 vue-tsc库ES2020ESNextES2020declaration: true浏览器ES2020ESNextES2020, DOMmoduleResolution: bundler12. 总结配置分类关键选项用途基本target, module, lib语言版本和运行环境严格strict, noImplicitAny类型安全输出outDir, declaration, sourceMap编译产物模块moduleResolution, paths, baseUrl模块解析检查noUnusedLocals, noImplicitReturns代码质量项目references, composite多项目构建

相关文章:

15. tsconfig.json 配置详解

15. tsconfig.json 配置详解 1. 概述 tsconfig.json 是 TypeScript 项目的核心配置文件,用于指定编译选项、文件包含/排除规则、项目引用等。正确配置 tsconfig.json 是 TypeScript 项目工程化的基础。 ┌────────────────────────────…...

Python数据流式处理:Streaming深度解析与实战

Python数据流式处理:Streaming深度解析与实战 引言 在Python开发中,数据流式处理是处理大数据和实时数据的关键技术。作为一名从Rust转向Python的后端开发者,我深刻体会到流式处理在处理海量数据时的优势。Python提供了多种流式处理工具&…...

14. 声明文件(Declaration Files)

14. 声明文件(Declaration Files) 1. 概述 声明文件(.d.ts 文件)用于描述 JavaScript 库的类型信息,让 TypeScript 能够理解和使用纯 JavaScript 编写的代码。声明文件只包含类型定义,不包含实现代码。 ┌─…...

远程会议还在发文档改来改去?我用 Rustpad 搭了个协作平台彻底解决

前言 远程会议开到一半,需要共同修订一份文档或代码提纲,这种场景估计不少人经历过。方案来来去去就那几个:发邮件等反馈、微信来回传文件、用腾讯文档但要登录账号……每种都有各自的鸡肋之处。后来我自己琢磨出一套更顺手的方案&#xff1…...

专业级图片去重神器:彻底告别重复照片的数字困扰

专业级图片去重神器:彻底告别重复照片的数字困扰 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾经花费数小时手动整理电脑中堆积如山的重复照片&a…...

【软考高级架构】论文预测——论基于ATAM的架构评估方法

论基于ATAM的架构评估方法 摘要 软件架构评估是保障系统质量属性满足业务目标的关键环节。架构权衡分析方法(Architecture Trade-off Analysis Method,ATAM)作为一种系统化的架构评估方法,通过场景捕获、质量属性分析、敏感点与权衡点识别、风险与非风险决策分类等结构化…...

干货合集:2026最新AI论文软件测评与推荐大全

2026年真正好用的AI论文软件,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...

2026企业网盘选型对比:坚果云领衔,5款主流产品优劣与场景建议

随着企业数字化办公不断加深,企业网盘已从“文件存储工具”演变为“组织级协作平台”。到2026年,各厂商在同步机制、协作效率、权限体系与安全合规方面差距进一步拉大。本文对5款主流企业网盘做横向对比,帮助管理者按业务场景选到更合适的方案…...

2026年AI面试助手深度测评:鹅来面 OfferGoose如何革新你的求职体验?

随着2026年求职市场的白热化,传统的“海投简历 裸面”模式已难以为继。无论是职场老将寻求突破,还是应届生初入职场,面对日益复杂的JD要求和瞬息万变的面试场景,一个高效的求职“第二大脑”变得至关重要。过去,求职者…...

受够了网盘限速?2026年更顺手的不限速同步盘选择

受够了网盘限速、下载慢、传大文件卡顿?如果你的核心诉求是“上传下载不被限速、同步稳定、多人协作更省心”,下面这4款网盘可以作为备选参考。本文以“传输体验 同步效率 安全合规 协作能力”做客观对比,方便你按需选择。 先看对比表&am…...

图解人工智能(31)深度学习前沿

在词向量模型中,训练的目的是使相关的词离的更近,不相关的词离的更远,其中“相关性”是按语义上的远近来判断的。假设我们要对下列领域中的对象做嵌入,该如何定义对象的相关性?(1)动物园里的动物…...

带标注的螺丝、螺栓、垫圈缺陷识别数据集,包含缺陷里包含生锈和划痕,1291张图,支持yolo,coco json,voc xml,文末有模型训练代码。

​ 带标注的螺丝、螺栓、垫圈缺陷识别数据集,包含缺陷里包含生锈和划痕,1291张图,支持yolo,coco json,voc xml,文末有模型训练代码。 数据集拆分 总图数:1291 张图数 训练集 1143 张图 验证集 106 张图…...

边缘AI框架:在边缘设备上运行AI模型

边缘AI框架:在边缘设备上运行AI模型 一、边缘AI框架概述 1.1 边缘AI框架的定义 边缘AI框架是指用于在边缘设备上部署和运行AI模型的软件框架。它提供了模型优化、推理加速和设备适配等功能,使得AI模型能够在资源受限的边缘设备上高效运行。 1.2 边缘AI框…...

自指系统与算术障碍的跨领域猜想:封闭认知框架下的几何-物理-计算统一理论研究(世毫九实验室原创研究)

自指系统与算术障碍的跨领域猜想:封闭认知框架下的几何-物理-计算统一理论研究(世毫九实验室原创研究) 作者:方见华 单位:世毫九实验室 摘要 本研究提出了一个关于"自指系统与算术障碍的跨领域猜想"的理论框…...

单智能体 vs 多智能体系统:架构对比与选择

单智能体 vs 多智能体系统:架构对比与选择 1. 标题 (Title) 单智能体 vs 多智能体系统:架构对比与选择指南 从单体到群体:智能体系统架构的深度解析与选型策略 智能体系统设计:何时选择单智能体,何时拥抱多智能体? 单一智慧 vs 群体智能:智能体系统架构对比与实践指南 …...

雷达信号体制识别

雷达信号体制识别 摘要 本文档基于工程中的信号识别流水线入口脚本及其所依赖的核心模块,系统梳理该工程如何实现雷达脉冲信号的体制分类(Signal Type Recognition)。该流水线采用“脉冲检测 → 脉冲描述字提取 → 脉内特征分析 → 驻留段分段…...

【限时解密】ElevenLabs未开放的客家话语音fine-tuning沙箱环境:如何用不到200条标注语句,在72小时内将模型MOS分从3.1提升至4.4(附私有化微调checklist)

更多请点击: https://codechina.net 第一章:【限时解密】ElevenLabs未开放的客家话语音fine-tuning沙箱环境:如何用不到200条标注语句,在72小时内将模型MOS分从3.1提升至4.4(附私有化微调checklist) Eleve…...

毕业设计 深度学习车道线检测(源码+论文)

文章目录 0 前言1 项目运行效果2 课题背景3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 🔥这两年开始毕业设计和毕业答辩的要求和难度不断…...

手写一个AI代码审查员:Claude Agent SDK + MCP 深度实战

引言2026年5月,Anthropic做了一件意味深长的事:把 Claude Code SDK 改名为 Claude Agent SDK。改名背后是一个判断——这不再是"帮你写代码的工具",而是一个能自主读代码、分析逻辑、修改文件、跑测试、甚至提PR的AI Agent编排框架…...

为什么你的ElevenLabs四川话输出总像“普通话+口音”?3步声学特征解耦法让韵律自然度提升2.8倍(附Python声谱可视化代码)

更多请点击: https://intelliparadigm.com 第一章:为什么你的ElevenLabs四川话输出总像“普通话口音”? ElevenLabs 当前并未提供原生四川话(西南官话成渝片)语音模型,其所谓“方言支持”实为在标准普通话…...

GitHub史诗级泄露:3800个核心仓库被窃,TeamPCP如何通过VS Code扩展攻破全球最大代码平台

一、引言:全球开发者的至暗时刻 2026年5月20日,一则消息震惊了整个科技界:微软旗下全球最大代码托管平台GitHub确认,约3800个内部私有仓库被威胁组织TeamPCP窃取,涵盖GitHub Copilot、CodeQL、GitHub Actions、Codespa…...

使用Taotoken后Keil5项目代码审查效率的直观提升

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken后Keil5项目代码审查效率的直观提升 1. 背景与需求 在嵌入式开发领域,代码审查是保证软件质量的关键环节…...

一文讲透|盘点2026年标杆级的AI论文网站

一天写完毕业论文在2026年已不再是天方夜谭。以下是2026年最炸裂、实测能大幅提速的AI论文网站神器,覆盖全流程生成、文献处理、降重润色、格式排版四大核心场景,帮你高效搞定毕业论文。 一、全流程王者:一站式搞定论文全链路(一天…...

Godot 4.3+生产级3D反向运动学(IK)系统实战指南

1. 这不是“加个插件就动起来”的玩具,而是能进生产管线的IK系统 在Godot社区里,“反向运动学”这个词被提得太多,也太轻了。我见过太多人把 Skeleton3D 拖进场景,点开 IK 节点属性,勾上“启用”,然后…...

终极指南:免费开源的AMD Ryzen调试神器SMUDebugTool完整使用教程

终极指南:免费开源的AMD Ryzen调试神器SMUDebugTool完整使用教程 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: …...

PostHog完整指南:5分钟搭建开源产品分析平台,免费监控用户行为

PostHog完整指南:5分钟搭建开源产品分析平台,免费监控用户行为 【免费下载链接】posthog.com Official docs, website, and handbook for PostHog. 项目地址: https://gitcode.com/GitHub_Trending/po/posthog.com PostHog是一款功能强大的开源产…...

Minecraft性能监控终极指南:如何用Spark快速诊断服务器卡顿

Minecraft性能监控终极指南:如何用Spark快速诊断服务器卡顿 【免费下载链接】spark A performance profiler for Minecraft clients, servers, and proxies. 项目地址: https://gitcode.com/gh_mirrors/spark6/spark Minecraft服务器性能优化一直是管理员面临…...

终极QR码修复指南:如何用QrazyBox免费恢复损坏的二维码

终极QR码修复指南:如何用QrazyBox免费恢复损坏的二维码 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否曾遇到过重要的二维码因为打印模糊、水渍污染或物理磨损而无法扫描&a…...

如何在5分钟内掌握DistroAV网络视频传输:新手完整指南

如何在5分钟内掌握DistroAV网络视频传输:新手完整指南 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 还在为复杂的直播布线烦恼吗?想要在不同设备…...

GanttProject终极指南:免费开源的项目管理工具完全攻略

GanttProject终极指南:免费开源的项目管理工具完全攻略 【免费下载链接】ganttproject Official GanttProject repository. 项目地址: https://gitcode.com/gh_mirrors/ga/ganttproject GanttProject是一款功能强大的免费开源项目管理软件,通过直…...