深入浅出TypeScript | 青训营笔记

68 阅读3分钟

一、为什么要学习TS

1、对比

image.png

2、优点

(1)包容性

1、Typescript是javascript的超集,.js文件可以直接重命名为.ts即可。
2、即使不显示的定义类型,也能够自动做出类型推导。
3、可以定义从简单到复杂的几乎一切类型。
4、兼容第三方库,即使第三方库不是用 TypeScript 写的,也可以编写单独的类型文件供 TypeScript 读取。

(2)可维护性和可读性

1、类型系统实际上是最好的文档,大部分的函数看看类型的定义就知道如何使用了。
2、可以在编译阶段就发现大部分的错误,这总比在运行时出错好。
3、增强了编译器和IDE的功能,包括代码补全,接口提示,跳转到定义,重构等。

二、TS基础

1、基础类型

(1)JS原有类型

原始类型:number/string/boolean/null/undefined/symbol。
对象类型:object(包括,数组、对象、函数等对象)

(2)TS新增类型

接口:接口(Interface)可以描述函数、对象、构造器的结构
元组:元组(Tuple)就是元素个数和类型固定的数组类型
枚举:枚举类型用于定义数值集合。 void:用于标识方法(函数)返回值的类型,表示该方法没有返回值。
any :声明为 any 的变量可以赋予任意类型的值。
unknown:是未知类型,任何类型都可以赋值给它,但是它不可以赋值给别的类型。

2、函数

image.png

image.png

3、interface

image.png

image.png

4、基础类

image.png

image.png

三、TS进阶

1、高级类型

(1)联合类型 |

定义:联合类型(Union)类似 js 里的或运算符 |,但是作用于类型,代表类型可以是几个类型之一。

let num : number |string
num=1
num='sss'\

(2)交叉类型&

定义:交叉类型(Intersection)类似 js 中的与运算符 &,但是作用于类型,代表对类型做合并。

image.png

(3)类型断言

有时候你会比 TS 更加明确一个值的类型,此时,可以使用类型断言来指定更具体的类型。\

实例:
image.png
使用:
image.png

(4)类型别名

当一个复杂类型或者联合类型过多或者被频繁使用时,可以通过类型别名来简化该类型的使用。

image.png

2、泛型

泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。

image.png

image.png

image.png

四、实战&工程向

1、文件声明

  • declare:三方库需要类型声明文件
  • .d.ts:声明文件定义
  • @types:三方库TS类型包
  • tsconfig.json:定义TS的配置

2、泛型约束后端接口类型

当一个对象类型被多次使用时,一般使用接口(interface)描述对象的类型,达到复用的目的

  • 我们使用interface关键字来声明接口
  • 接口名称推荐以为开头
  • 声明接口之后,直接使用接口名称作为变量的类型
    1. 因为每一行只有一个属性类型,因此,属性类型后没有 ;(分号)

image.png
建议用下下面:\

image.png