初识TypeScript编译器(tsc)
创始人
2024-03-20 16:46:45
0

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


文章目录

      • 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


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

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...