前端 | 青训营笔记

60 阅读3分钟

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

学习使我快乐.jpeg

今天,学习了JavaScript 的语法超集TypeScript。

主要内容

  • TypeScript 历史及定义解析
  • TypeScript 优势解读
  • TypeScript 练习工具

发展历史

image.png

TypeScript的优势?

  • 可读性增强:基于语法解析TSDoc并且ide增强
  • 可维护性增强:在编译阶段暴露大部分错误
  • 多人合作的大型项目中,获得更好的稳定性和开发效率
  • 包含于兼容所有JS特性,支持共存
  • 支持渐进式引入与升级

唯一编译器推荐:Visual Studio Code

基础数据类型

image.png

对象类型

image.png

也可以自定义类型,我们通常用I开头。

  • readonly:只读属性,约束属性不可在初始化对象外赋值。
  • 任意属性:约束所有对象属性都必须是该属性的子类型。例如:[key:string]:any;

函数类型

image.png 如何为函数添加类型声明?

  • 直接在函数上进行一个类型的补充
  • 给函数变量赋值一个函数类型的声明

数组类型

image.png

补充类型

image.png

泛型

不预先指定具体的类型,而在使用的时候再指定类型的一种特性。 image.png

类型别名与类型断言

image.png

接着,学习了TypeScript 高级类型,让我们可以在日常的前端开发过程中,通过高级类型的方式,将普通类型的解决方案进行高级化。

重点内容

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

联合交叉类型是什么?

  • 联合类型可以表示一个值可以是几种类型之一。
  • 交叉类型多种类型叠加一起成为一种类型,它包含所需的所有类型的特性。

类型保护与类型守卫

类型保护:访问联合类型时,处于程序安全,仅能访问联合类型中的交集部分。 类型守卫:定义一个函数,它的返回值是一个类型谓词,生效范围为子作用域。 此外,联合类型+类型保护=自动类型推断

  • 索引类型:关键字keyof,其相当于取值对象中的所有key组成的字符串字面量。
  • 关键字in:其相当于取值字符串字面量中的一种可能,配合泛型即表示每个key。
  • 关键字[?]:通过设定对象可选选项,即可自动推导出子集类型。

函数返回值类型

  • 实现函数delayCall的类型声明
  • delayCall接受一个函数作为入参
  • 结果为入参函数的返回结果

函数返回值类型

关键字extends跟随泛型出现时,表示类型推断,其表达可类比三元表达式。 关键字infer出现在类型推荐中,表示定义类型变量,可以用于指代类型。

TypeScript 工程应用

image.png

image.png

d7bd2fc23a194c738ef9c7e2e089766b.jpeg

学习了新的东西很开心!!!!!!!!!!!!!!

加油!拒绝摆烂!让我们不负青春!在青训营度过充实的一天!