[Typescript入门(2)|青训营笔记]

89 阅读3分钟

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

今天的视频课[typescript高级数据类型]是在完成对TypeScript与JavaScript的分析后,老师带领我们认识TypeScript高级类型,提供常见的解决方案,帮助我们可以在日常的前端开发过程中,通过高级类型的方式,将普通类型的解决方案进行高级化。同时在课程最后,老师还以Web场景为例,介绍 TypeScript的工程应用。
我把今天视频老师教授的知识进行了整理和概括,具体内容如下:

1. 联合/交叉类型

例如为书籍列表编写类型时,类型声明繁琐,存在较多重复。代码如下:

QQ截图20230131204304.png 此时我们就要想办法用简单便捷的代码实现这个功能。Typescript中有联合/交叉数据类型可以很好的解决这一问题。

联合类型: lA | lB;联合类型表示一个值可以是几种类型之一。

交叉类型: lA & lB;多种类型叠加在一起成为一种类型,它包含了所需的所有类型的特性。

联合/交叉类型的具体形式如下: QQ截图20230131204936.png

2. 类型保护与类型守卫

类型保护: 就是访问联合类型时,处于程序安全,仅能访问联合类型中的交集部分。具体声明方式如下: QQ截图20230131205416.png 类型守卫: 定义一个函数,它返回的值是一个类型谓词,生效范围为子作用域。具体声明方式如下: QQ截图20230131205551.png 联合类型+类型保护: 等于自动类型推断,根据自动识别出它的类型。具体声明方式如下: QQ截图20230131205749.png

3. Merge函数类型实现

在Merge函数类型实现过程中有许多需要注意的点,我列举几个:

  • 要求sourceObj必须为targetObj的子集
  • 类型实现繁琐:若obj类型较为复杂,则声明source和target便需要重复2遍
  • 容易出错:若target增加/减少key,则需要source联动去除
  • 索引类型:关键字【keyof】,其相当于取值对象中所有key组成的字符串字面量。等等。。。

4. 函数返回值类型

实现函数delayCall的类型声明,delayCall接收一个函数作为入参,其实现延迟1s执行函数,其返回promise,结果作为入参函数的返回结果。具体实现如下: QQ截图20230131210832.png

5.Typescript工程应用

1. webpack。通过使用webpack达到前端工程化。其主要步骤如下:
  • 配置webpack loader相关配置
  • 配置tsconfig.js文件
  • 运行webpack启动/打包
  • loader处理ts文件时,会进行编译与类型检查
2. nodejs使用。在node中使用tsc编译实现typescript转换成JavaScript。具体实现步骤如下:
  • 安装node与npm
  • 配置tsconfig.js文件
  • 使用nom安装tsc
  • 使用tsc运行编译得到js文件
这节课主要就是带我们进行Typescript的一些深入了解,认识一些里面的高级数据类型。好了今天的分享到此结束,我们明天见,希望大家指出不足之处以待改正~~