TypeScript | 青训营笔记

99 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第8天

什么是TypeScript

js

  • 动态类型
  • 弱类型

ts

  • 静态类型
  • 弱类型
  • js的超集
    • 兼容所有js特性,支持共存
    • 支持渐进式引入与升级

动态类型

  • 在执行阶段进行类型匹配和检验(运行时才会提示出错误)

静态类型

  • 在编译阶段进行类型匹配和检验(编译过程没有错误才能运行)
  • 可读性强
    • 基于语法解析TSDoc,ide增强,强大的代码提示和补全
  • 可维护性强(编译阶段暴露大部分错误)

弱类型

存在数据的隐式类型转换

基本语法

基本数据类型

js到ts的转换:变量后面加冒号,指明数据类型

QQ图片20220803092516.png

对象数据类型

自定义类型,类型一般I开头(约定习惯) QQ图片20220803105002.png

函数类型

QQ图片20220803111458.png

函数重载

image.png

数组类型

image.png

ts补充类型

image.png

ts泛型

image.png

判断类型

image.png

指定默认值

image.png

高级类型

当遇到比较复杂的数据,以往的类型声明繁琐,存在较多重复。

  • 联合类型:表示一个值可以是几种类型之一
    • 仅能访问联合类型的交集部分,其他部分报错
  • 交叉类型:多种类型叠加到一起成为一种类型,包含了所需类型的所有特性。
  • 索引类型关键字
    • 【keyof】相当于取对象中所有key组成的字符串字面量。
    • 【in】相当于取字符串字面量中的一种可能,配合泛型p,即表示每个key
    • 【?】通过设定对象可选选项,可自动推导出子集类型
    • 【extends】跟随泛型出现时,表示类型推断,其表达式可类比三元表达式
    • 【infer】出现在类型推荐中,表示定义类型变量,可用于指代类型

类型保护与守卫

  • 类型守卫:定义一个函数,它的返回值是一个类型谓词,生效范围为子作用域。
  • 类型保护:先判断数据类型,符合预期就执行对应函数。

联合类型 + 类型保护 = 自动类型判断