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篇类型体操,等你哟😎

相关推荐
by__csdn6 小时前
Vue3 setup()函数终极攻略:从入门到精通
开发语言·前端·javascript·vue.js·性能优化·typescript·ecmascript
濮水大叔10 小时前
VonaJS是如何做到文件级别精确HMR(热更新)的?
typescript·node.js·nestjs
刘发财14 小时前
前端一行代码生成数千页PDF,dompdf.js新增分页功能
前端·typescript·开源
黛色正浓16 小时前
【React18+TypeScript】React 18 for Beginners
javascript·react.js·typescript
一只秋刀鱼17 小时前
从 0 到 1 构建 React + TypeScript 车辆租赁后台管理系统
前端·typescript
by__csdn18 小时前
Vue3 生命周期全面解析:从创建到销毁的完整指南
开发语言·前端·javascript·vue.js·typescript·前端框架·ecmascript
沐风。561 天前
TypeScript
前端·javascript·typescript
Hao_Harrision2 天前
50天50个小项目 (React19 + Tailwindcss V4) ✨ | DrinkWater(喝水记录组件)
前端·react.js·typescript·vite7·tailwildcss
江澎涌2 天前
JWorker——一套简单易用的基于鸿蒙 Worker 的双向 RPC 通讯机制
typescript·harmonyos·arkts
南知意-2 天前
开源高性能IM+集成AI能力,基于SpringBoot +Tauri+Vue 3+TypeScript支持全平台与丰富会话模式
typescript·开源·springboot·tauri·工具·im·软件