TS:类型断言

发布时间:2024年01月05日

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

理解:就是让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代码:

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_36968599/article/details/135405989
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。