初识TypeScript编译器(tsc)

news2024/11/23 23:51:02

须知少时凌云志,
曾许人间第一流。
哪晓岁月蹉跎过,
依旧名利俩无收。


文章目录

      • 1. 安装 TypeScript
      • 2. 熟悉tsc的编译选项
      • 3. 编译.ts文件
      • 4. TS报错后那JS呢
          • 4.1 通过noEmitOnError禁止在出错的情况下编译出JS目标文件
      • 5. 查看编译生成的JS文件
          • 5.1 通过target进行JS版本切换

对于有过Java/C/Rust/Go等编程语言经验的开发者来讲,对于编译器这个概念应该都不陌生。(比如 javac , gcc , rustc …)

今天我们主要来看一下 TypeScript 编译器 —— tsc


1. 安装 TypeScript

官方链接:Installing TypeScript && Download TypeScript

  • npm install -g typescript
  • yarn add typescript --dev
  • pnpm add typescript -D

Visual Studio 默认支持。

2. 熟悉tsc的编译选项

如果我们不熟悉tsc的命令,我们可以通过以下命令获取帮助。

  • tsc --help

  • tsc --help --all

如下图所示:
TSC


3. 编译.ts文件

就像写JavaScript文件一样,我们可以使用记事本/Vim都可以。(友情提示:Vistual Studio效果更佳哦)

这里以官网内容为例


console.log('Hello,TypeScript!')

function greet(person:string,date:Date){
	console.log(`Hello ${person}, today is ${date}!`);
}

greet("Bert",new Date())
greet("Bert") // 错误调用
greet("Bert", 5) //错误调用

在这里插入图片描述
TypeScript在编译阶段很清楚的帮助我们发现&指出问题。

4. TS报错后那JS呢

在这里插入图片描述
通过node命令运行之后:(WTF?)
在这里插入图片描述
仔细想一下,我们发现这也属于正常现象:

这些错误行为相对于放荡不羁的JavaScript 而言,都是常规操作。

4.1 通过noEmitOnError禁止在出错的情况下编译出JS目标文件

很显然这不是我们想要的那种结果。我们可以通过开启 noEmitOnError 编译选项 来避免此行为。
No Emit On Error -noEmitOnError

Do not emit compiler output files like JavaScript source code, source-maps or declarations if any errors were reported.(如果报告有任何错误,则编译不输出文件)

tsc --noEmitOnError hello.ts

5. 查看编译生成的JS文件

为了对比,这里给出了源文件(Hello.ts)文件。

console.log('Hello,world!')


// function sum(x:number, y:number) {
//   return x + y
// }

// sum(5,true)

function greet(person:string, date:Date) {
  console.log(`Hello ${person}, today is ${date}!`);
}
 
greet("Bert"); // 错误调用
greet("Bert",new Date());
greet("Bert",1) // 错误调用

// 定义一个箭头函数
const welcome = (name:string) => {
  console.log(`Welcome ${name}`)
}


在这里插入图片描述

箭头函数,模板字符串都是 ECMAScript 2015(或者 ECMAScript6、ES2015、ES6 等)引入的新特性。

我们通过上面代码的对比,很容易就发现差异:

  • 类型擦除(Erased Types)
  • JavaScript版本降级(Downleveling)

默认情况下,TypeScript 会转化为 ES3 代码

5.1 通过target进行JS版本切换

我们可以通过设置target编译选项来进行ECMAScript版本切换。这里为了获得ES6版本的目标代码,可以运行如下指令:

tsc --target es6 hello.ts

关于-- target 后面的版本号(默认es3),可以是如下值:

  • es3

  • es5

  • es6/es2015

  • es2017

  • es2018

  • es2019

  • es2020

  • es2021

  • es2022

  • esnext

     PS: 不区分大小写。
    

详细内容可以查看这里:tsconfig的 lib. 和 target


后面的严格模式以及更多的编译选项设置,且听下回分解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库分库分表方案

一、数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发…

文华财经期货量化短线策略支撑压力指标公式,短线行情无未来函数多空均线红涨绿跌信号

很多人从行情历史走势图发现,金叉行情上涨,死叉行情下跌的规律,告诉大家那些完美冬形只是过去式而已,行情震荡时,指标失灵可以把你震荡到爆仓。我们也会经常发现不好的指标在很多情况下会相互矛盾,这个指标…

[程序人生] [世界杯] 程序员世界杯的熬夜调节套餐 - 茶叶篇

🍁简介 最近看世界杯熬夜,搞点小酒(百威/威士忌/各种洋酒) 配花生米,再搞点串 简直人生不要太爽, 但是!!! 问题来了,几天下来 喉咙不适,肺部不适觉得痰多, 查了一下是酒辛辣食品太多了!早上萎靡不振咖啡提神…

车载诊断新驱动——远程诊断

文章目录 前言一、远程诊断作用二、解决方案三、现状和趋势总结前言 今天是2022年12月5日,终于迎来了疫情尾声的消息。 分享一段喜欢的文字,避免自己成为高知识低文化的工科男: 与其热闹着引人注目,步步紧逼,不如趋向…

基于springboot的作业管理系统设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

软件测试基础篇(3)

测试用例:围绕着软件需求文档来进行设计测试用例 测试用例:本质上是一种集合,是为了实施测试而向被测试系统发出的一组集合,实施测试集合,这个集合的操作者设计者就是测试人员,这组集合的内容包括:测试环境,操作步骤&a…

【JavaScript】用echarts绘制饼图

🙋‍ 哈喽大家好,本次是JavaScript专栏echarts板块第一期 ⭐本期内容:用echarts绘制饼图 🏆系列专栏:JavaScript 👍一起学习,一起加油! 文章目录前言效果图思路准备一个dom基于准备好…

网络安全对避免勒索软件侵害的5个原因

近几年来,勒索病毒已成为全球最热门的关键字之一,已造成了及其严重的经济损失。许多企业意识到这种情况,并试图集中精力保护自己免受这类威胁。在这里本人结合案例分享出5个原因,以让更多企业避免勒索软件的侵害。 原因1.勒索软…

【C++】模拟实现STL容器:list

目录 一、list的介绍 二、list的排序 三、迭代器 1、list的迭代器失效问题 2、迭代器的功能分类 3、list迭代器的模拟实现 3.1普通迭代器 3.2const迭代器 4、迭代器价值 5、迭代器operator->的重载 四、模拟实现时遇到的困惑及注意点 1、调用拷贝构造时&#xf…

Spring Cloud Gateway核心过滤器之请求限流详解

环境:SpringBoot2.4.13 Spring Cloud Gateway3.0.1 概述 RequestRateLimiter GatewayFilter工厂使用一个RateLimiter实现来确定当前请求是否允许继续。如果不是,返回HTTP 429 - Too Many Requests(默认情况下)的状态。 该过滤器接受一个可选的keyReso…

基于51单片机的贪吃蛇游戏设计

1绪 论 1.1本课题研究的背景及意义 随着当今社会的发展,人们的生活节奏变得越来越快,人们开始逐渐的融入全球化的世界。人们已经不再局限于一小块天地,加班,出差已经占据了现代人生活的绝大部分。这个时候,一款简单易携…

ChatGPT 体验和思考

一、体验 1、辅助写代码 2、检查代码(遗憾的是,不一定是对的) 3、分析代码 4、帮你了解/入门一项陌生的技术 小结: AI 会慢慢成为程序员的得力帮手,但目前来看,似乎还是不够成熟。 当然,大多…

《软件工程》2013年期末试卷

北京信息科技大学《软件工程》2013年期末试卷

青岛山水新城二期景观设计 全套设计

目录 1前言 2 1.1 青岛市地理位置与自然概况 2 1.2 山水新城小区概况 3 1.3设计的目的和意义 4 1.4小区园林景观设计现状和发展趋势 5 2本论 6 2.1设计依据 6 2.1.1 平面规划图 6 2.1.2 国家及地方有关规定及标准 6 2.2 设计指导思想 6 2.2.1 “以人为本”的设计理念 6 2.2.2 “…

PHP毕业设计毕设辅导课(1):PHP 基础语法

PHP 基础语法 PHP 脚本在服务器上执行&#xff0c;然后将纯 HTML 结果发送回浏览器。 PHP 基本的语法和输出 PHP 脚本可以放在文档中的任何位置。 <?php // PHP 代码 ?>PHP 脚本以 <?php 开始&#xff0c;以 ?> 结束&#xff0c;代码示例如下&#xff1a; …

[附源码]Python计算机毕业设计Django天狗电子商城系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

用Prophet在Python中进行时间序列预测

预测通常被认为是报告的发展。报告可以帮助我们回答&#xff0c;发生了什么事&#xff1f;预测有助于回答下一个逻辑问题&#xff0c;将会发生什么&#xff1f; 最近我们被客户要求撰写关于时间序列预测的研究报告&#xff0c;包括一些图形和统计输出。 Prophet的目的是“使专…

[附源码]Python计算机毕业设计Django酒店客房管理信息系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

问题解决:记录一次Linux服务器根目录突然爆满

一、出问题了 过了个双休来到公司&#xff0c;同时发现Linux终端的服务器状态中根目录空间直接爆满100%&#xff0c;周五走之前根目录仅仅使用了59%&#xff0c;同时项目服务的后台不停的有日志打印&#xff0c;而且测试的小伙伴说系统登录不上去了。下面记录一下个人排查并解…

CORTEX-A7芯片中断系统基本原理与控制方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;如何使用高端芯片的中断系统的方法。 目录 第一&#xff1a;中断的基本简介 ​第二&#xff1a;GIC控制器介绍 第一&#xff1a;中断的基本简介 中断系统是一个处理器重要的组成部分&#xff0c;中断系统极大的提高了CPU的…