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

阮一峰《TypeScript 教程》学习笔记——tsc 命令

1. 一段话总结

tsc是TypeScript官方命令行编译器,核心功能是检查代码类型将TS编译为JavaScript;默认优先使用当前目录的tsconfig.json配置,但命令行参数可覆盖配置;基本用法包括编译指定文件(如tsc index.ts)、批量编译目录文件(如tsc src/*.ts)、指定配置文件(如tsc --project tsconfig.prod.json);关键命令行参数涵盖配置生成(–init,生成tsconfig.json)、观察模式(–watch,文件修改自动重编译)、仅类型检查(–noEmit,不生成JS产物)、仅生成类型声明(–emitDeclarationOnly)等,且大部分参数与tsconfig.json属性一一对应,可灵活控制编译行为。


2. 思维导图

在这里插入图片描述


3. 详细总结

一、tsc命令简介

  1. 定义
    tsc(TypeScript Compiler)是TypeScript官方提供的命令行编译器,是TS项目编译与类型检查的核心工具。
  2. 核心作用
    • 对TS代码进行类型检查,检测类型错误;
    • 将TS代码编译为JavaScript代码,支持指定输出JS版本、模块格式等;
    • 生成类型声明文件(.d.ts),供其他项目引用类型。
  3. 配置优先级
    • 默认优先读取当前目录的tsconfig.json配置;
    • 命令行参数可覆盖tsconfig.json中的同名属性(如命令行--strict true会覆盖配置文件中strict: false)。

二、tsc基本用法(按场景分类)

用法场景命令示例说明
默认编译(用tsconfig.json)tsc从当前目录向上查找tsconfig.json,按配置编译所有匹配文件
编译单个文件tsc index.ts仅编译index.ts,忽略tsconfig.jsonfiles/include配置
编译目录批量文件tsc src/*.ts编译src目录下所有.ts文件,支持通配符*(匹配单层文件)、**(匹配多层目录)
指定配置文件tsc --project tsconfig.prod.json或简写tsc -p ./config(指定配置文件所在目录),优先使用该配置
仅类型检查(不生成产物)tsc --noEmit执行类型检查,但不生成任何JS或.d.ts文件
生成类型声明文件tsc index.ts --declaration --emitDeclarationOnly仅生成index.d.ts类型声明文件,不输出JS文件
多文件合并编译tsc app.ts util.ts --outfile index.js仅支持moduleNone/System/AMD的模块,合并为单个JS文件

三、核心命令行参数(按功能分类,关键参数加粗)

功能分类参数名称核心作用关键说明
配置生成与指定–init在当前目录生成全新的tsconfig.json文件包含预设配置(带注释),无需手动编写基础配置
–project/-p指定tsconfig.json文件或其所在目录示例:tsc -p ./config(使用config目录下的tsconfig.json)
–showConfig在终端输出最终生效的编译配置(不执行编译)用于调试配置,查看命令行参数与配置文件的合并结果
编译输出控制–outDir指定编译产物(JS/.d.ts)的存放目录示例:tsc --outDir ./dist(产物输出到dist目录)
–outFile将所有非模块文件合并为单个指定JS文件仅支持moduleNone/System/AMD,不支持CommonJS/ES模块
–declaration为每个.ts文件生成对应的.d.ts类型声明文件需配合--declarationDir指定声明文件目录(如--declarationDir ./types
–emitDeclarationOnly仅生成.d.ts文件,不输出JS文件适用于仅需提供类型声明的场景(如发布TS库时)
–removeComments从编译产物中移除所有代码注释默认保留注释,开启后产物无注释
类型检查控制–noEmit仅执行类型检查,不生成任何编译产物(JS/.d.ts)适用于快速校验代码类型正确性,不需要产物的场景
–strict开启所有严格类型检查(等价开启7个子选项,如--strictNullChecks可单独关闭子选项(如tsc --strict --alwaysStrict false
–checkJs对JS文件进行类型检查(自动开启--allowJs等价于在JS文件头部添加// @ts-check注释
–noImplicitAny当变量/参数被隐式推断为any类型时,编译报错--strict开启时默认生效,强制显式声明类型
观察与增量编译–watch/-w进入观察模式,文件修改后自动重新编译适用于开发阶段,无需手动重复执行编译命令
–build启用增量编译,仅重新编译修改过的文件及依赖需配合tsconfig.jsoncomposite: true,加快大型项目编译速度
–incremental生成tsbuildinfo文件,记录编译状态,实现增量构建--build配合使用,进一步优化编译效率
模块与解析–module指定编译产物的模块格式(如commonjs/esnext/node16默认值与--target关联(如target=es5时默认commonjs
–moduleResolution指定模块定位算法(如node/node16/classic默认值与--module关联(如module=node16时默认node16
–resolveJsonModule允许在TS代码中使用import命令加载JSON文件需配合--allowJs,加载后JSON文件类型会被自动推断

4. 关键问题

问题1:tsc命令的基本用法涵盖哪些核心场景?如何指定非默认的tsconfig.json文件?

答案
tsc命令的基本用法涵盖5个核心场景,具体如下:

  1. 默认编译场景:执行tsc,从当前目录向上递归查找tsconfig.json,按配置编译所有匹配文件(如include指定的文件);
  2. 单文件/批量文件编译场景:执行tsc index.ts(单文件)或tsc src/*.tssrc目录所有.ts文件),忽略tsconfig.jsonfiles/include配置;
  3. 仅类型检查场景:执行tsc --noEmit,仅检测代码类型错误,不生成任何JS或.d.ts产物;
  4. 生成类型声明场景:执行tsc index.ts --declaration --emitDeclarationOnly,仅生成index.d.ts类型声明文件,不输出JS;
  5. 多文件合并场景:执行tsc app.ts util.ts --outfile index.js,将多个文件合并为单个JS(仅支持moduleNone/System/AMD)。

指定非默认tsconfig.json文件的方式:使用**–project(简写-p)参数**,后跟配置文件路径或其所在目录。示例:

  • 指定配置文件:tsc --project tsconfig.production.json
  • 指定配置目录(目录下需有tsconfig.json):tsc -p ./config(使用config目录的配置)。

问题2:tsc命令行参数与tsconfig.json属性的关系是什么?如何体现“命令行参数覆盖配置文件”的规则?

答案
两者的核心关系是**“大部分tsc命令行参数与tsconfig.json的属性一一对应”(如--outDir对应compilerOptions.outDir--strict对应compilerOptions.strict),且命令行参数的优先级高于tsconfig.json**,即当两者存在同名配置时,命令行参数会覆盖配置文件的设置。

“覆盖规则”的具体体现:

  1. tsconfig.jsoncompilerOptions.outDir = "./build",但命令行执行tsc --outDir ./dist,最终产物会输出到./dist(命令行参数覆盖配置);
  2. tsconfig.jsoncompilerOptions.strict = false,但命令行执行tsc --strict true,最终会开启严格类型检查(命令行参数覆盖配置);
  3. 特殊场景:若命令行指定了编译文件(如tsc index.ts),会直接忽略tsconfig.jsonfiles/include/exclude的文件匹配规则,仅编译指定文件。

例外:部分参数仅存在于命令行(如--init生成配置文件、--watch观察模式、--showConfig输出配置),无对应的tsconfig.json属性。

问题3:--noEmit--emitDeclarationOnly--watch三个参数的核心作用、适用场景及关键限制分别是什么?

答案
三个参数的核心差异体现在“是否生成产物”“生成何种产物”“是否自动重编译”,具体如下表:

参数名称核心作用适用场景关键限制
–noEmit仅执行类型检查,不生成任何编译产物(JS/.d.ts)1. 开发中快速校验代码类型正确性;
2. 代码评审前的类型合规检查
无产物输出,仅用于类型校验,无法获取可执行JS
–emitDeclarationOnly仅生成.d.ts类型声明文件,不输出JS文件1. 发布TS库时,仅需提供类型声明(JS由其他工具编译);
2. 为JS项目补全类型声明
需配合--declaration参数使用,否则无法生成.d.ts
–watch/-w进入观察模式,文件修改后自动重新编译1. 开发阶段实时预览编译结果;
2. 避免手动重复执行tsc命令
仅在开发环境使用,生产环境编译需手动执行tsc(避免意外重编译)

示例:

  • 开发中校验类型:tsc --noEmit
  • 发布TS库:tsc --declaration --emitDeclarationOnly --outDir ./types
  • 开发实时编译:tsc --watch --outDir ./dist
http://www.dtcms.com/a/533495.html

相关文章:

  • pos机做网站推广上传文件到网站根目录
  • 德州王霞网站建设郑州企业建筑设计软件
  • 怎样建设简单的网站网站建设论文任务书
  • 最新电子电气架构(EEA)调研-1
  • 简述网站开发的工作流程企业运营模拟实践报告
  • 做外贸网站平台企业网站建设宣贯
  • 技术支持 湖北网站建设合肥seo公司
  • 如何快速建设推广网站创建手机网站
  • 服饰的网站建设晋江原创网
  • 电子商务网站的建设的原理有个网站301什么
  • 网站怎么做接口西安做网站电话
  • 广东网站建设有限公司品牌推广方案模板
  • 安德塔屋人类图Base并置理论Base1解析
  • 建网站没有公司资质校园类网站建设
  • Mem0:构建具有可扩展长期记忆的生产级AI代理 - 论文学习总结2
  • 手机网站如何建立c语言怎么做网站
  • [特殊字符] 通俗易懂:Kubernetes命名空间(Namespaces)详解
  • 科技期刊网站建设企业网站需要哪些功能
  • 第五章:清晰篇 - 语音前端处理:从嘈杂环境中捕捉纯净人声
  • 神经学习(4)神经网络的向量化实现与TensorFlow训练流程
  • 用php做的网站用什么数据库网络营销的盈利模式
  • 2005 年真题配套词汇单词笔记(考研真相)
  • 怎么用网网站模板做网站博客移植wordpress
  • AutoSAR实战教程--英飞凌MCAL/ETH Driver移植LwIP以太网协议栈(Tc3XX系列)
  • 外出手痒怎么玩家里游戏?手机用UU远程玩家中电脑游戏
  • 林州网站建设公司个人域名备案后不能干什么
  • 网站泛目录怎么做网站建设中图片尺寸
  • SAP交货单过账接口(无批次)分享
  • CCF-GESP 等级考试 2024年3月认证C++四级真题解析
  • C++ 类的学习(五) 友元成员