TS:类型断言

类型断言好比其他语言中的类型转换,但是不是真正的类型转换方式,之所以不被称为类型转换,是因为转换通常意味着某种运行时的支持。但是,类型断言纯粹是一个编译时语法,同时,它也是一种为编译器提供关于如何分析代码的方法。

理解:就是让ts编译顺利通过

1、原则

  • 联合类型可以被断言为其中一个成员类型
  • 父类可以被断言为子类
  • 任何类型都可以被断言为 any
  • any 可以被断言为任何类型
  • 要使得 A 能够被断言为 B,只需要 A 兼容 B 或 B 兼容 A 即可

2、类型断言有两种形式

2.1 尖括号

let someValue: any = 'this is a string';
let strLen: number = (<string>someValue).length;

2.2 as语法

let someValue: any = 'this is a string';
let strLen: number = (someValue as string).length;

两种形式是等价的,但是如果在ts中使用了jsx语法的话,只能使用 as 语法。

2.3、 非空断言

后缀表达式操作符 ! 可以用于断言操作对象是非 null 和非 undefined 类型。具体而言,x! 将从 x 值域中排除 null 和 undefined

1)忽略undefined和null类型:

在这里插入图片描述

2)函数调用时忽略undefined类型:

在这里插入图片描述

3)非空断言只是让ts编译通过,在生成的js代码中,会移除非空断言的相关代码,所以在实际使用的过程中,要特别注意。

在这里插入图片描述
生成的js代码:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值