TS初探 | 青训营笔记

123 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

01 TS历史

02 为什么TS

TS与JS比较:

  1. JS动态类型(执行阶段才确定类型,比如py),TS静态类型
  2. 都是弱类型语言(自动隐式类型转换)

优势

  1. 静态——可读性强,可维护性强 => 多人合作友好
  2. JS的超集,兼容JS,支持渐进式改造

03 TS基础

基础数据类型

声明方法——主要是参数类型要声明出来

复杂数据类型

只读 readonly jobID : number;

可选 hobby ?: string;

任意属性

函数重载

要重视传入参数的类型

数组

先定义type

然后再声明,以及赋值

TS补充

TS泛型

不预先指定类型,使用的时候再指定

注意语法与函数的不同

泛型约束

限制泛型必须符合某个数据类型

泛型默认类型

类型别名&类型断言

字符串/数字字面量

04 高级类型

联合、交叉类型

类型声明繁琐,存在较多重复

联合类型:IA|IB;联合类型表示一个值可以是几种类型之一

交叉类型:IA&IB;多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性

类型保护与类型守卫

根据key的情况来判断选了哪个类型

Merge 函数类型实现

js经常会污染,需要解构的方式来实现

可以用source、target来为对象进行类型的声明

keyof索引类型,关键字in、?

函数返回值类型

关键字:【extends】跟随泛型出现时,表示类型推断,其表达可类比三元表达式。如 T=== 判断类型?类型 A:类型 B 关键字【infer】出现在类型推荐中,表示定义类型变量,可以用于指代类型。

TypeScript 工程应用

node、web端两种

webpack——自动

使用TSC编译——手动