初识TypeScript编译器(tsc)

news/2024/11/7 22:32:01/

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


文章目录

      • 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.ppmy.cn/news/142822.html

相关文章

ts概述、ts环境准备和编译、ts类型声明

文章目录 1. ts概述2. ts环境准备和编译3. ts类型声明3.1 布尔值3.2 数字类型3.3 字符串类型3.4 any和unknown3.5 void、null、undefined3.6 never类型3.7 字面量类型3.8 枚举类型3.9 object对象类型3.10 数组3.11 元组3.12 自定义类型type3.13 联合类型3.14 交叉类型3.15 类型…

TS的介绍

1.什么是ts ts可以理解为JavaScript的超集,它是由微软公司开发的一种编程语言,可以运行在任何浏览器还有操作系统 2.全局安装ts npm i -g typescript 3.ts的优点 1)灵活:可以将代码自动转换为js代码 2)兼容性强&a…

远程连接相关操作技巧

作在工作中,经常需要远程连接到服务器上,然而在公司里,老总、同事都需要连接到服务器上的,而默认的Win2003操作系统最大连接数是2,这样一来,问题也就来了,常常遇到“终端服务器超出最大连接数”…

spring-boot版本影响Spring AOP @Before @Around @After等执行顺序

郁闷了半天,我通过AOP切面打印的日志顺序怪怪的,网上查了好几篇文章都说没问题,最后发现是springboot版本升级后Before Around After等执行顺序发生了变化。 1.切面类 Aspect// 这是一个切面 Component// 这是一个需要被装配的spring bean S…

基于Jackson实现API接口数据脱敏

一、背景 用户的一些敏感数据,例如手机号、邮箱、身份证等信息,在数据库以明文存储(加密存储见《基于Mybatis-Plus拦截器实现MySQL数据加解密》), 但在接口返回数据给浏览器(或三方客户端)时&a…

ORA-39001

oracle 11g执行expdp导出脚本时报错&#xff1a; ORA-39001:参数值无效 ORA-39000:转储文件说明错误 ORA-31641:无法创建转储文件“xxxxx.dmp" ORA-27038:所创建的文件已存在 OSD-04010&#xff1a;?????<create>??,?????????? 解决方式&#xf…

ORA-39002 ORA-39168

impdp导入报错ORA-39002 ORA-39168 $ impdp \/ as sysdba\ parfileimpdp.par Import: Release 11.2.0.4.0 - Production on Fri Apr 16 10:57:13 2021Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 11g Ente…

VS-RK3399性能介绍

VS-RK3399采用6核64位处理器&#xff0c;主频1.8Ghz。GPU采用Mali-T860 GPU, OpenGL ES1.1/2.0/3.0/3.1, OpenVG1.1, OpenCL,DX11等规范。 搭载嵌入式Android 7.1版本系统,板载DDR3 2GB内存, 并可支持3G/4G通信模块扩展&#xff0c;HDMIEDPMIPI显示输出(支持1080P) 板载16GB NA…