首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >TypeScript >TypeScript 的编译过程是怎样的?tsconfig.json 有哪些关键配置?

TypeScript 的编译过程是怎样的?tsconfig.json 有哪些关键配置?

词条归属:TypeScript

1. 编译过程

  • TypeScript 编译器(tsc)读取 .ts 源文件,进行词法分析、语法分析、类型检查
  • 类型检查通过后,将 TypeScript 代码"擦除"类型注解,生成等效的 JavaScript 代码
  • 编译过程不改变代码的运行时行为,仅移除类型信息
  • 支持增量编译:只重新编译发生变化的文件,提升构建速度
  • 支持项目引用(Project References):将大型项目拆分为多个子项目,实现更高效的增量构建

2. tsconfig.json 的作用

  • tsconfig.json 是 TypeScript 项目的配置文件,定义了编译选项和包含的文件范围
  • 运行 tsc 时会自动读取该配置,无需在命令行中重复指定选项
  • 支持继承其他配置文件(extends),便于在多个项目间共享配置

3. 关键编译选项

  • target:指定编译输出的 ECMAScript 版本(如 ES2020、ESNext)
  • module:指定模块系统(ESNext、CommonJS、NodeNext、Bundler 等)
  • moduleResolution:指定模块解析策略(node、node16、nodenext、bundler)
  • strict:开启所有严格类型检查选项
  • noEmit:仅执行类型检查,不生成输出文件(适用于 CI 或仅用于类型检查的场景)
  • declaration:生成对应的 .d.ts 声明文件
  • sourceMap:生成 source map 文件,便于调试
  • outDir:指定编译输出目录
  • include / exclude:指定需要编译或排除的文件范围
  • skipLibCheck:跳过对声明文件(.d.ts)的类型检查,加快编译速度
  • esModuleInterop:允许从 CommonJS 模块使用默认导入

4. 严格模式选项

  • strict 是一个复合选项,开启后会自动启用以下检查:
  • noImplicitAny:禁止隐式 any 类型
  • strictNullChecks:null 和 undefined 只能赋值给自身或 never
  • strictFunctionTypes:函数类型检查更严格
  • strictBindCallApply:严格检查 bind、call、apply 的参数
  • strictPropertyInitialization:类属性必须在构造函数中初始化
  • noImplicitThis:禁止 this 隐式为 any
  • alwaysStrict:始终以严格模式编译
相关文章
Spring IoC配置元信息:Spring IoC有哪些配置元信息?它们的进化过程是怎样的?
Spring IoC 中依赖注入、依赖查找以及依赖来源的管理,这些内容其实都逃不过一个话题,那就是注入和配置到底是从哪里来的?我们能不能通过配置的行为去影响容器的行为?
码农架构
2020-10-26
7740
面试题:程序编译的过程是怎样的?
程序编译是将源代码转换为可执行文件的过程,包含了预处理、编译、汇编和链接四个主要阶段。
GeekLiHua
2025-01-21
3590
cookie有什么作用?认证过程是怎样的?
程序员在平时的工作中,往往会使用到多种编程工具以及方法,这些方法能够让软件系统开发,或者网络维护的过程变得更加高效与可靠,cookie是存储在用户终端设备里的数据,这些数据大多都是经过加密技术处理过的,它具有什么作用?认证过程是怎样的?大家一起来看看具体内容吧!
用户8739990
2021-06-25
1.8K0
页表有什么用?地址翻译过程是怎样的
页表是用来记录每个页对应的物理页框号、访问权限等信息的数据结构。它的作用是在分页机制下,用于将虚拟地址转换为物理地址,以便进程能够正确地访问内存中的数据和指令。
程序员朱永胜
2023-12-02
5480
编译原理具体是做什么的?一般的编译流程有哪些?
大学里面的专业有很多,在我国的大学里面拥有非常全面的专业科目,而在互联网行业快速发展的今天,国家在互联网方面也是设立了很多很多的专业,不同的专业针对性也是不一样的,其中不仅仅拥有关于计算机不同方面的研究,还有一些对于编程语言的研究,编译原理就是通过研究编程语言而设立的计算机专业,相信大家或多或少都了解过这个专业的,那么编译原理具体是做什么的?一般的编译流程有哪些?下面小编就为大家来详细介绍一下。
用户8794017
2021-07-02
1K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券