TypeScript中使用类型断言的几种方式

大家好,我是苏先生,一名热爱钻研、乐于分享的前端工程师,跟大家分享一句我很喜欢的话:人活着,其实就是一种心态,你若觉得快乐,幸福便无处不在

github与好文

正文

  • 为什么需要类型断言

尽管类型推断很智能,但同时也很死板,不懂得变通。如果严格按照推断来定义类型可能会让开发者付出一些额外的却有不必要的工作与精力。事实上,开发者在不犯错的情况下,往往比编译器更清楚自己想要的类型,因此需要一种手段来绕过默认的推导行为

  • 如何断言

1.as

通过as关键字,可以强制将一个类型断言为另一个类型。如下,将Ani断言为Spp

2.as const

TypeScript中,let声明的变量具有更宽泛的类型推导

const则范围更小

下边是一个与联合类型结合使用的例子。由于s表示的是一个更宽泛的number类型,number又是1|2的父类型,从而产生报错

此时,只需要将s替换为ss,由于ss表示的是子类型,根据协变特性,子类型可以代替父类型使用

3.非空断言

当我们明确在一定条件下,某个对象的某个key一定存在时,可以通过!进行标记

  • 断言的条件

断言与any不同,它必须在一定的条件和范围内才能实现类型的互换,如下,两个不相干的类型之间无法断言

断言的前提条件是两个类型之间存在父子关系,能够产生协变或者逆变

  • 超越断言规则的断言

由于unknowany的子类型,而any又是任意类型的父类型,因此通过此中转,可以完成任意类型的断言转换


如果本文对您有用,希望能得到您的点赞和收藏

订阅专栏,每周更新1-2篇类型体操,等你哟😎

相关推荐
tech_zjf5 小时前
装饰器:给你的代码穿上品如的衣服
前端·typescript·代码规范
三棵杨树8 小时前
TypeScript从零开始(三):基础类型下
typescript
zoomdong9 小时前
10x 提升!TypeScript 宣布使用 Go 重写
前端·typescript
蒜香拿铁12 小时前
【typescript基础篇】(第三章) 函数
前端·typescript
蒜香拿铁12 小时前
【typescript基础篇】(第三章) 接口
前端·typescript
kangyouwei12 小时前
TS中Omit如何在enum枚举类型上使用
typescript
只会写Bug的程序员13 小时前
面试之《TypeScript泛型》
前端·面试·typescript
青春路上的小蜜蜂1 天前
鸿蒙——实操开发自定义Hivigor插件并发布插件
typescript·harmonyos·plugin·hvigor·自定义插件
觉醒法师1 天前
HarmonyOS开发 - 电商App实例二( 网络请求http)
前端·http·华为·typescript·harmonyos·ark-ts
shmily_yy1 天前
Ts支持哪些类型和类型运算(下)
前端·typescript