TypeScript课程笔记 | 青训营笔记

102 阅读3分钟

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

TypeScript课程笔记

一、重点内容

  1. TypeScript 历史及定义解析
  2. TypeScript 优势解读
  3. TypeScript 练习工具
  4. 联合交叉类型
  5. 类型保护与类型守卫
  6. Merge 函数类型实现
  7. 函数返回值类型
  8. TypeScript 工程应用

二、详细知识点

1、动态类型和静态类型

  • 动态类型语言

       执行时才会编译(检验匹配),例如PHP

  • 静态类型语言

       提前做,先编译再执行。检验匹配,例如:C、JAVA

2、弱类型语言和强类型语言

  • 弱类型语言

       类型转换。例如数字和字符串可以相加,隐式类型转换

  • 强类型语言

       强制类型定义。例如数字和字符串不可以相加,报错

3、TypeScript 优势:

(1)静态类型

  • 可读性增强:基于语法解析TsDoc,ide增强

    语法解析,自动帮助生成文档。写的类型会说明含义,写这个类型就相当于写了文档

    ide类型提示,语法补全

  • 可维护性增强:在编译阶段暴露大部分错误

    语法拼写错误、类型匹配错误

  • 多人合作的大型项目中,获得更好的稳定性和开发效率

(2)JS的超集

  • 包含于兼容所有JS特性,支持共存
  • 支持渐进式引入与升级

4、TypeScript基础类型

number、string、boolean、null、undefined、symbol、bigInt。

5、自定义类型

约定大写I开头是类型

6、一些属性类型

  • readonly只读属性

    只读属性:约束属性不可在对象初始化外赋值

  • ?可选属性

    可选属性:定义该属性可以不存在

  • any任意属性 任意属性:约束所有对象属性都必须是该属性的子类型

  • 如果一个对象的key是变量,方括号

7、为函数添加类型声明,两种方式

(1)直接在函数上进行类型补充

 函数参数类型,括号里面x: number

 返回值类型,函数右小括号后面加冒号和返回值类型

(2)给函数变量赋值一个函数类型声明

 定义函数类型,函数类型赋给变量

 函数返回类型标识用箭头=>

8、函数重载

容易出错,注意定义类型范围要更大

9、数组类型

(1)「类型+方括号」表示

type IArr1 = number[];

(2)泛型表示

type IArr2 = Array<string | number Record<string,number>>;

(3)元祖表示

IArr3 = [number,number,string,string];

(4)接口表示

interface IArr4 { [key: number] : any; }

(5)赋值

const arr1: IArr1 = [123456];
const arr2: IArr2 = [12'3', '4', { a: 1 }];
const arr3: IArr3 = [12, '3','4'];
const arr4: IArr4 = ['string',() => null,{},[]];

10、Typescript补充类型

(1)空类型,表示无赋值

type IEmptyFunction = () => void;

(2)任意类型,是所有类型的子类型

type IAnyType = any;

(3)枚举类型:支持枚举值到枚举名的正反映射

enum ECorlor { Mon,Tue,wed,Thu,Fri,Sat,Sun };

ECorlor ['Mon'] === 0;

ECorlor[0] == 'Mon'

(4)泛型

type INumArr = Array<number>;

11、泛型

泛型:不预先指定具体的类型,而在使用的时候再指定类型的一种特性

type IGetRepeatArrR = <T>(target: T) => T[];

12、高级类型

Partial, Readonly, Record, Pick, Required, Exclude, Extract, Omit, NonNullable, Parameters [1]

条件类型、映射类型、类型推断、never 类型

13、其他重点内容

  • 联合交叉类型
  • 类型保护与类型守卫
  • Merge 函数类型实现
  • 函数返回值类型

13、推荐使用的Typescript编辑器

  1. awesome
  2. babel
  3. Node

三、个人总结

  • 类型往往只需要一处声明,其它地方都是自动推断的。
  • 对于 Typescript 来说,类型完备很重要,也就是说,Typescript 对框架和工具的要求是很高的
  • Typescript 支持类型最大的好处是可读性。类型可以给开发者更多的信息,是最有价值的文档。

四、引用参考

[1] TypeScript 的所有高级类型

juejin.cn/post/684490…