码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 初识TypeScript编译器(tsc)


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


    文章目录

        • 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) //错误调用
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    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}`)
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在这里插入图片描述

    箭头函数,模板字符串都是 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: 不区分大小写。
      
      • 1

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


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

  • 相关阅读:
    如何正确的中断线程?你的姿势是否正确
    python *和**的用法
    蓝队应急响应之Linux篇
    Linux 内核音频子系统调试
    Apache HTTPD 多后缀解析漏洞复现
    【另类加法】
    在虚拟机上部署SPDK NVME测试案例
    软考 系统架构设计师 简明教程 | 系统运行与软件维护
    数据结构之堆的结构与实现
    代码随想录算法训练营第二十三天|669 修剪二叉搜索树 108 将有序数组转换为二叉搜索树 538 把二叉搜索树转换为累加树
  • 原文地址:https://blog.csdn.net/wangcheeng/article/details/128177431
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号