【青训营】- TypeScript入门之基础知识

1,023 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

本文同时参与掘力星计划,赢取创作大礼包,挑战创作激励金

前言

前期回顾

TypeScript入门之开发环境及预备知识

基础知识

TS中的类型层次

QQ截图20211014163424.png 划重点

  • 下层类型的值可以赋给上层类型的变/常量

  • unknown类型的变/常量可以指向任何类型的值。

  • 不存在never类型的变量( never是空集 )

Top/Bottom Type

对比:不同语言的Top Type和Bottom Type QQ截图20211014163620.png

any

1、any比较特殊,它既是Top Type又是Bottom Type

  • 也就是说:any类型的变量/常量与任何其他类型变量/常量 可以互相赋值

  • 但any是类型不安全的无语言服务的、所以应该尽量避免使用 QQ截图20211014164743.png 2、any具有传染性

  • 它会使它所触及的地方变得不安全(Type Unsafe),所以TS在3.0引入了类型安全的unknown类型作为Top Type 3、any会隐藏bug

  • 因为没有类型信息,即便错误使用,也没有任何报错。 QQ截图20211014165011.png

4、any会隐藏代码设计细节

  • 丢失了对数据类型的设计 在tsconfig中开启strict模式或禁止隐式any QQ截图20211015103720.png 划重点
  • 开启noImplicityAny尽量避免使用any

unknown

QQ截图20211015104005.png 划重点

  • 如果无法预知类型,不要用any,用unknown,收窄类型后再使用

布尔类型(boolean)

布尔类型只有两个元素:true和false QQ截图20211015104204.png

number类型

number包括:整数、浮点数、+Infinity(正负无穷 ), NaN QQ截图20211015104328.png

bigint类型

  • bigint是新引入的类型,可以表示任意大小的整数,number范围[- ( 2^53-1 ),2^53-1]

  • bigint字面量是在数字后面加小写"n" 。bigint支持 加+,减,乘*,除/,求余%,幂** QQ截图20211015104533.png

字符串类型(string)

QQ截图20211015104700.png

符号类型(symbol)

  • symbol是ES2015引|入的新的语言特性 QQ截图20211015104836.png 对比 字符串字面量类型 VS unique symbol QQ截图20211015105432.png QQ截图20211015105537.png

对象类型(Object)

通过以下两点来理解以下对象类型

  • 定义对象和定义对象类型;

  • 获取对象keys和获取对象类型keys QQ截图20211015105716.png

数组类型(Array)

数组有两种注解方式:

  • T[]

  • Array<T>接口泛型 QQ截图20211015105856.png

元组(Tuple)

元组( Tuples )是数组的子类型。元组各索引位上的元素类型是确定的。

知识点:因为元组的创建方法和数组是一样的,所以元组必须显示注解QQ截图20211015110126.png

[...string[]]等价于string[] ,但[string, ...string[]]不等价于string[],前者至少包含一个元素

枚举(Enum)

枚举本质上是一种映射。会在值空间产生一个包含该映射的对象。 QQ截图20211015110319.png 枚举的合并: 枚举可以拆分成多段,还可以与同名namespace合并 QQ截图20211015110439.png

常量枚举

  • 常量枚举不会在值空间创建变量

  • 所有引用常量枚举的地方都被替换为对应的值 QQ截图20211015110716.png

null,undefined,void,never

QQ截图20211015110842.png

结语

如以上有错误的地方,请在评论区中指出,谢谢!

小可爱们看完点个赞再走一走~~