【青训营】- TypeScript进阶笔记

简介: 【青训营】- TypeScript进阶笔记

这是我参与8月更文挑战的第22天,活动详情查看:8月更文挑战

基础知识

any

  1. any比较特殊,其实它既是Top TYPE又是Bottom Type,也就是说: any类型的常量/变量可以与任何其他类型的变量/常量相互赋值,但是any类型是不安全的,无语言服务的,所以应该尽量避免使用。
  2. any具有传染性: 它会使它所触及的地方变得不安全,所以TS在3.0引入了类型安全的unknown类型作为Top Type.
  3. any会隐藏bug
  4. any会隐藏代码设计细节:丢失了对数据类型的设计

unknown

  • unknown类型必须显示注解,TS不会把任何值推导为unknown
  • unknown类型只能进行等于和不等于比较
  • 只有类型收窄后才能进行相应运算或函数调用

boolean

布尔类型只有两个元素:true和false

  • let var变量会被拓宽成boolean类型,const常量就是对应字面量类型
  • true和false的联合类型,会被反推回boolean类型

TypeScript进阶

类型操作keyof

keyof是在TS2.1引入的,它获取类型上所有已知、public键对应的类型联合。

接口

接口与类型别名可以认为是同一概念的两种语法。下面介绍下接口与类型别名的区别。

  1. 类型别名更为通用,其右侧可以包含类型表达式,但接口右侧只能是某种结构。
  2. 接口间继承时TS会检查二者关系,但类型联合时TS会尽最大阻力尝试不会报错。
  3. 同一个作用域的多个同名接口声明会被合并。而多个同名类型别名会报错。

class是ES2015引入的新特性,class本质上还是一个函数。作为构造器的函数,必须具有prototype属性,并且prototype类型和构造器返回值的类型相同。

相关文章
|
4月前
|
JavaScript 前端开发 测试技术
[小笔记]TypeScript/JavaScript数组转置
[小笔记]TypeScript/JavaScript数组转置
38 0
|
4月前
|
JavaScript 前端开发 测试技术
[小笔记]TypeScript/JavaScript模拟Python中的Range函数
[小笔记]TypeScript/JavaScript模拟Python中的Range函数
29 0
|
1月前
|
JavaScript 前端开发
TypeScript极速入门笔记1
TypeScript极速入门笔记1
34 4
|
4月前
|
JavaScript 前端开发 Java
小笔记:如何使用代码注释:关于JavaScript与TypeScript 注释和文档的自动生成
小笔记:如何使用代码注释:关于JavaScript与TypeScript 注释和文档的自动生成
219 0
|
4月前
|
JavaScript 前端开发 测试技术
[小笔记]TypeScript/JavaScript模拟Python中的zip(不使用map)
[小笔记]TypeScript/JavaScript模拟Python中的zip(不使用map)
20 0
|
4月前
|
存储 JavaScript 前端开发
TypeScript笔记(15)—— 深入理解TypeScript中的装饰器
TypeScript笔记(15)—— 深入理解TypeScript中的装饰器
58 0
|
4月前
|
存储 JavaScript 前端开发
TypeScript笔记(5)—— 基本数据类型
TypeScript笔记(5)—— 基本数据类型
42 0
|
4月前
|
JavaScript 前端开发 编译器
TypeScript笔记(4)—— TypeScript中的类型注解
TypeScript笔记(4)—— TypeScript中的类型注解
21 0
|
4月前
|
域名解析 JavaScript 前端开发
TypeScript笔记(3)—— 使用WebPack工具
TypeScript笔记(3)—— 使用WebPack工具
27 0
|
4月前
|
JSON JavaScript 前端开发
TypeScript笔记(2)—— 使用VSCode实时编译TypeScript代码
TypeScript笔记(2)—— 使用VSCode实时编译TypeScript代码
56 0