TypeScript学习(四)

3.9元祖

场景:在地图中,使用经纬度坐标来标记位置信息 

 可以使用数组来记录坐标,该数组只有两个元素,并且这两个元素都是数值类型

let cor: number[] = [120, 30]

 使用number[]的缺点:不严谨,因为该类型的数组中可以出现任意多个数字

更好的方式:元祖 Tuple

元祖类型是另一种类型的数组,它确切知道包含多少个元素,以及特定索引对应的类型

let cor: number[] = [120, 30]
let posoition: [number, number] = [120, 30]

3.10类型推论

在TS中,某些没有明确指出类型的地方,TS的类型推论机制会帮助提供类型。

换句话说:由于类型推论的存在,这些地方,类型注释可以省略不写

发生推论的两种常见场景:1.声明变量并初始化时 2.决定函数返回值时

这两种情况类型注释可以不写

推荐:能省略的地方就省略,提高开发效率

3.11类型断言 

类型断言用于手动指定一个值的类型。有时候你会比TS更加明确一个值的类型。此时,可以使用类型断言来指定更具体的类型。

两种断言写法 

const aLink = document.getElementById('link') as HTMLAnchorElement
const aLink = <HTMLAnchorElement>document.getElementById('link')

1.使用as关键字断言

2.as后面是一个更加具体的类型

3.通过类型断言,aLink的类型变的更加具体,这样就可以访问a标签特有的属性或方法了。 

4.console.dir()打印DOM元素,在属性列表的最后面,即可看到元素的类型

3.12字面量类型

let str1 = 'Hello Ts' //string类型
const str2 = 'Hello TS' //Hello Ts 类型

解释

str2是一个常量,它的值不能变化,所以类型是'Hello TS' 

此处的'Hello TS' 就是一个字面量类型,也就是说某个特定的字符串也可以作为TS中的类型,除了字符串外,任意的JS字面量(对象、数字)都可以作为类型使用

3.13枚举类型

枚举类型相当于字面量类型+联合类型组合的功能,也可以表示一组明确的可选值。

枚举:定义一组枚举常量。它描述一个值,该值可以是这些命名常量中的一个 

enum Direction {
    Top,
    Left,
    Bottom,
    Right,
}

function changeDirection(direction: Direction) {
    console.log(direction)
}

changeDirection(Direction.Top)

 解释:

1.使用enum关键字定义枚举

2.约定枚举名称、值以大写字母开头

3.枚举中多个值以逗号作为分隔

4.定义好枚举后直接使用枚举名称作为类型注释

注意:形参direction的类型为枚举Direction,那么实参的值就是枚举Direction成员中的任意一个。 

枚举成员的值以及数字枚举

问题:我们把枚举成员作为了函数的实参,它的值是什么?

changeDirection(Direction.Top) //Direction.Top=0

注意:

1.枚举成员是有值的,默认为0开始自增的数值

2.我们把枚举成员的值为数字的枚举,称为数字枚举

3.可以给枚举成员初始化值

enum Direction {
    Top = 2,
    Left = 10,
    Bottom = 8,
    Right = 6,
}

字符串枚举:枚举成员的值是字符串

注意:字符串枚举没有自增长行为,因此,字符串枚举的每个成员都必须有初始值。

 枚举的特点以及原理:

枚举是TS为数不多的非JS类型之一

因此:枚举不仅是类型,还提供值。

也就是说,其他类型在编译为JS代码时自动移除,但是枚举类型会被编译为JS代码。

3.14any类型 (尽量少用)

不会有任何类型错误提示

let name: any = 10

 3.15 TS中的typeof

TS也提供了typeof操作符,可以在类型上下文中引用变量或属性的类型(类型查询)

使用场景:根据已有变量的值,获取该值的类型,来简化类型书写。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值