TypeScript学习-第11章:配置文件(tsconfig.json)
TypeScript学习-第11章配置文件tsconfig.json上一章咱们用模块把代码拆得明明白白终于摆脱了“大杂烩”困境。可一执行编译命令tsc又懵了编译后的JS文件跟TS源码混在一起看得眼花缭乱明明写的是ES6语法编译后却变成了老旧的ES3甚至有些测试文件、配置文件也被一并编译……这时候就需要tsconfig.json登场了它就像TS编译的“专属控制面板”能自定义编译目标、输出路径、文件范围等所有规则让编译行为完全按你的想法来。今天咱们就手把手搞定这个“配置神器”从此告别编译混乱的尴尬。一、配置文件生成一行命令搞定初始化刚开始写TS时很多人会手动创建tsconfig.json结果写错字段、漏写配置编译时各种玄学报错。其实TS早就给咱们准备了“一键生成”命令自动创建包含所有核心配置的模板文件按需修改即可。# 初始化tsconfig.json需先全局安装TypeScriptnpm install -g typescripttsc --init执行命令后项目根目录会生成一个满是注释的tsconfig.json文件里面包含了TS所有可配置项注释里详细说明了每个配置的作用咱们只需把需要的配置项注释解开修改对应值就行堪称“懒人福音”。小提示如果项目中存在tsconfig.json执行tsc命令时TS会自动读取该文件的配置若想指定其他配置文件可使用tsc --project 配置文件路径简写tsc -p 路径。二、核心配置项吃透compilerOptions与include/excludetsconfig.json的核心是compilerOptions编译选项和include/exclude文件范围控制前者管“怎么编译”后者管“编译哪些文件”二者组合就能覆盖绝大多数项目的需求。1. compilerOptions编译行为的“核心控制台”这是配置文件中最关键的部分包含数十个配置项咱们挑最常用、最核心的几个来讲尤其是必开、必配的选项帮你避开90%的编译坑。{compilerOptions:{// 1. 编译目标ES版本必配把TS编译成对应版本的JStarget:ES6,// 可选值ES3、ES5、ES6/ES2015、ES2020等// 类比把“普通话”TS翻译成“方言”对应ES版本适配不同运行环境// 2. 模块系统必配指定生成的模块类型module:ESNext,// 可选值CommonJS、ESNext、UMD等// 适配场景Node.js用CommonJS现代浏览器/框架用ESNext// 3. 输出目录必配编译后的JS文件存放路径outDir:./dist,// 建议放在dist目录与源码隔离// 避坑不配置的话JS文件会和TS文件混在同一目录// 4. 源码目录必配指定TS源码所在目录rootDir:./src,// 源码统一放在src目录编译时按该目录结构输出到outDir// 作用确保dist目录结构与src一致避免文件混乱// 5. 严格模式必开开启所有类型安全校验规则strict:true,// 等价于开启strictNullChecks、noImplicitAny等所有严格规则// 重要性这是TS类型安全的核心不开等于白用TS// 6. ES模块互操作必开兼容CommonJS和ES模块esModuleInterop:true,// 解决import CommonJS模块如Node.js内置模块的报错问题// 场景导入jQuery、lodash等CommonJS模块时无需额外断言}}补充几个实用配置项按需添加strictNullChecks: true单独开启空值校验strict: true已包含禁止把null/undefined赋值给非空类型noImplicitAny: true禁止隐式any类型strict: true已包含强制所有变量、参数指定类型sourceMap: true生成SourceMap文件方便调试TS源码开发环境开启生产环境关闭resolveJsonModule: true允许导入.json文件并提供类型提示。2. include/exclude精准控制编译文件范围默认情况下TS会编译项目根目录下所有.ts、.tsx文件但我们通常需要排除测试文件、配置文件、node_modules等这时候就靠include包含和exclude排除来控制。{compilerOptions:{/* 省略编译选项 */},// 包含的文件只编译src目录下所有TS文件**表示所有子目录*表示所有文件include:[./src/**/*],// 排除的文件不编译node_modules、测试文件、dist目录exclude:[./node_modules,./src/**/*.test.ts,// 排除所有.test.ts测试文件./dist]}避坑提醒exclude仅对include包含的文件生效若文件不在include范围内即使不排除也不会被编译node_modules目录默认会被排除无需手动添加。三、编译模式增量编译与监视模式日常开发中频繁手动执行tsc编译效率很低TS提供了两种高效编译模式大幅提升开发体验。1. 监视模式开发必备用tsc --watch简写tsc -w开启监视模式TS会实时监听src目录下的TS文件变化一旦文件保存自动触发编译无需手动执行命令。# 开启监视模式实时编译文件tsc --watch开启后终端会显示编译状态文件修改后会自动重新编译报错信息也会实时更新开发时全程开启即可。2. 增量编译大型项目优化大型项目中TS文件数量多每次全量编译耗时久增量编译能只编译修改过的文件大幅缩短编译时间。只需在compilerOptions中添加incremental: true即可。{compilerOptions:{incremental:true,// 开启增量编译tsBuildInfoFile:./dist/.tsbuildinfo// 存储编译信息的文件下次编译时读取}}原理首次编译时TS会生成.tsbuildinfo文件记录每个文件的编译状态后续编译时仅对比文件变化只重新编译修改过的文件及依赖它的文件适合文件数量超过100个的大型项目。四、实战按项目类型配置tsconfig.json不同项目React/Vue/Node.js的配置需求不同下面给出三种常见项目的实战配置直接复制修改即可使用。1. React项目配置TSX语法{compilerOptions:{target:ES2020,module:ESNext,outDir:./dist,rootDir:./src,strict:true,esModuleInterop:true,jsx:react-jsx,// 支持React JSX语法React 17无需导入ReactmoduleResolution:NodeNext,// 适配现代Node.js模块解析sourceMap:true,resolveJsonModule:true,lib:[ES2020,DOM]// 引入ES2020语法和DOM API类型},include:[./src/**/*],exclude:[./node_modules,./src/**/*.test.tsx]}2. Vue项目配置ViteTSVite项目默认会生成基础TS配置补充核心选项即可{compilerOptions:{target:ES2020,module:ESNext,outDir:./dist,rootDir:./src,strict:true,esModuleInterop:true,jsx:preserve,// Vue JSX语法支持moduleResolution:NodeNext,sourceMap:true,resolveJsonModule:true,lib:[ES2020,DOM],types:[vite/client,vue]// 引入Vite和Vue的类型声明},include:[./src/**/*,*.vue],exclude:[./node_modules]}3. Node.js项目配置CommonJS模块{compilerOptions:{target:ES2020,module:CommonJS,// Node.js默认支持CommonJS模块outDir:./dist,rootDir:./src,strict:true,esModuleInterop:true,sourceMap:true,resolveJsonModule:true,lib:[ES2020]// Node.js项目无需DOM库},include:[./src/**/*],exclude:[./node_modules,./src/**/*.test.ts]}五、避坑指南与深度总结strict模式必开不犹豫很多人嫌严格模式麻烦关闭后TS变成“弱类型检查”各种空值、隐式any问题会隐藏到运行时得不偿失。outDir与rootDir配套使用单独配置其中一个会导致文件路径混乱配套配置能确保编译后目录结构与源码一致。esModuleInterop别漏开导入CommonJS模块时出现“类型不匹配”报错大概率是没开这个配置开启后即可解决。不同环境配置区分开开发环境开启sourceMap、watch模式生产环境关闭sourceMap、开启增量编译可创建多个配置文件如tsconfig.dev.json、tsconfig.prod.json分别对应。配置报错先查字段拼写TS对配置字段拼写敏感比如把“outDir”写成“outdir”会导致配置失效报错时先检查字段名。最后总结tsconfig.json不是“玄学配置”而是TS编译的“规则手册”——核心是通过compilerOptions定制编译行为用include/exclude控制文件范围搭配监视模式、增量编译提升开发效率。不同项目的配置虽有差异但“strict: true”“esModuleInterop: true”等核心选项是通用的掌握这些就能根据项目需求灵活配置让TS编译完全按你的预期执行。

相关新闻

【无人机通信】基于matlab无人机电力线宽带同步算法农场现有的电网基础设施经济高效、可扩展的数据采集【含Matlab源码 15063期】

【无人机通信】基于matlab无人机电力线宽带同步算法农场现有的电网基础设施经济高效、可扩展的数据采集【含Matlab源码 15063期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…

2026/5/17 2:06:15 阅读更多 →
thinkphp+vue校园个人闲置物品换购平台的设计与开发

thinkphp+vue校园个人闲置物品换购平台的设计与开发

目录校园个人闲置物品换购平台的设计与开发摘要技术架构核心功能创新点项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理校园个人闲置物品换购平台的设计与开发摘要 该平台基于ThinkPHP框架与Vue.js技术栈,旨在为高校学生提供便捷的闲置…

2026/5/17 2:06:12 阅读更多 →
谁偷走了那50%的预算?全渠道归因与流量反作弊实录

谁偷走了那50%的预算?全渠道归因与流量反作弊实录

1. 谁偷走了我的广告费?—— 多渠道时代的“罗生门” 做投放的兄弟们大概都有过这种甚至想砸电脑的时刻: 打开Google Ads,后台显示带来了100个转化; 切到Facebook Ads,这货说他也贡献了80个转化; 再看T…

2026/5/17 2:06:09 阅读更多 →

最新新闻

借助冰淇淋车趣味学 Vim 操作,快速上手完整游戏攻略来啦!

借助冰淇淋车趣味学 Vim 操作,快速上手完整游戏攻略来啦!

借助冰淇淋车学习 Vim 操作 在这里,冰淇淋车就是你的光标,小镇则代表你的文本。你可以用这种有趣的方式学习 Vim 操作。快 玩完整游戏 试试演示版 ↓ 快速体验一关 你只需使用 h j k l 键,就能将冰淇淋车开到顾客面前。玩完整游戏 → 玩法说明…

2026/7/3 4:33:13 阅读更多 →
第94题 2026年国家级科研痛点 IGBT模块用高导热硅凝胶与灌封材料

第94题 2026年国家级科研痛点 IGBT模块用高导热硅凝胶与灌封材料

2026年国家级科研痛点 IGBT模块用高导热硅凝胶与灌封材料 痛点直陈 当前1200V至3300V新能源车及轨道交通用IGBT功率模块,封装材料陷入四个死结无法动弹:一是导热系数想做到2.5W/(mK)以上,胶水粘度就飙升,灌进微米级细缝必裹气泡&a…

2026/7/3 4:31:12 阅读更多 →
Django分页封装

Django分页封装

page_data.pyfrom django.utils.safestring import mark_safe from copy import deepcopy class PageData:def __init__(self,request,queryset,page_size1,page_num3,page_parampage):request:请求queryset:数据表的查询结果pagesize:一页显示多少条数据page_num:当前页面显示…

2026/7/3 4:29:12 阅读更多 →
贴合厂房工况 给廊坊食品无尘车间选择净化板

贴合厂房工况 给廊坊食品无尘车间选择净化板

廊坊紧邻京津,本地聚集大量加工企业,食品净化车间、无尘厂房新建改造需求常年稳定。不少采购负责人挑选净化板只对比出厂价格,忽略本地车间蒸汽大、频繁冲洗消杀、昼夜温差大的特点,低价洁净墙板使用不久就出现板面生锈、板材吸水…

2026/7/3 4:27:12 阅读更多 →
企业AI生产遇瓶颈,可观测性工具如何升级破局?

企业AI生产遇瓶颈,可观测性工具如何升级破局?

AI可观测性:现状与挑战 这看似是个简单的问题,但如今却没有令人满意的答案。随着企业纷纷将AI投入生产,发现用于监控传统软件的工具无法直接应用于AI系统。根本原因在于,AI出现故障的方式与软件不同,它不会抛出清晰的错…

2026/7/3 4:25:11 阅读更多 →
TD3 护照识别难点分析及兴通物联多形态护照识别设备集成实践

TD3 护照识别难点分析及兴通物联多形态护照识别设备集成实践

TD3 规格护照 MRZ 机读码是涉外身份核验的核心采集对象,两行 44 位固定格式字符对扫码设备光学成像、OCR 纠错算法、环境抗干扰能力提出较高门槛。不少项目采用通用扫码设备采集时常出现反光误读、识别成功率偏低、系统适配受限等问题。本文从 MRZ 识别技术难点出发…

2026/7/3 4:25:11 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻