TypeScript | 青训营笔记

81 阅读3分钟

1.TypeScript是什么,与JavaScript有什么区别

js是什么

TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码,可运行在任何浏览器,任何操作系统。

js与ts的一些区别

ts 引入了 js 中没有的“类”概念

ts 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中。

js没有重载概念,ts有可以重载

ts增加了接口interface、泛型、类、类的多态、继承等

ts对比js基础类型上,增加了 void/never/any/元组/枚举/以及一些高级类型

ts可在编译期间发现错误并纠正,而js只能在运行时发现错误

ts的使用人数趋势

Snipaste_2023-05-06_22-41-30.jpg 由图可以发现,TpyeScript作为后起之秀,逐年受到更多开发者的青睐,而学习它,也成了前端的一种趋势

2.TypeScript基础

基础类型

  1. boolean、number、string

  2. undefined、null

  3. any、unknown、void

  4. never

  5. 数组类型[]

  6. 元组类型tuple

其中,never主要用于防御性编程,如果一个函数执行时抛出了异常,那么这个函数永远不存在返回值(因为抛出异常会直接中断程序运行,这使得程序运行不到返回值那一步,即具有不可达的终点,也就永不存在返回了);或者,函数中执行无限循环的代码(死循环),使得程序永远无法运行到函数返回值那一步,永不存在返回。

// 异常
function err(msg: string): never { // OK
  throw new Error(msg); 
}
 
// 死循环
function loopForever(): never { // OK
  while (true) {};
}

函数类型

ts定义函数类型时要定义输入参数类型和输出类型。其中输入参数支持可选参数和默认参数;输出参数在输出时可以自动推断,没有返回值时,默认为void类型;函数重载:名称相同但参数不同,可以通过重载支持多种类型

// 1.函数声明法
function fun(): string {
    return '123'
}
// 2.匿名函数法
let fun2 = function (): number {
    return 123
}
// 3.没有返回值的方法
function fun3(): void {
    console.log(111);
 
}

定义:写法和JS差不多,增加了一些定义

// 定义类
class Person {
    // 公共属性,默认可以不写
    public name: string
    // 构造函数
    constructor(name: string) {
        // 初始化name属性
        this.name = name
    }
}
// 实例化类
const person = new Person('zs')
console.log(person.name) // zs

特点:

-增加了public、private、protected修饰符

-抽象类:

——只能被继承,不能被实例化

——作为基类,抽象方法必须被子类实现

-interface约束类,使用implements关键字

3.关于TypeScript的思考

1.对类型安全的诉求。无论在浏览器还是服务端,前端项目规模越来越大,越来越复杂。而规模越大,对静态类型语言的诉求就越强烈。

2.Typescript是一门支持ES6规范的语言,这套规范是在2015年发布的,它指出了在未来一段时间客户端脚本语言的发展方向,也就是Typescript脚本语言的语法会成为未来一段时间客户端语言的主流语法。并且它是由微软和谷歌两大科技巨头一起维护的。