【TypeScript】TS类型守卫(八)

类型守卫是 TypeScript 中用于判断未知类型是否符合预期类型的方法,包括 `in`、`typeof`、`instanceof` 和自定义类型。`in` 适用于确认对象是否包含特定属性;`typeof` 判断基本数据类型,如 Boolean、String 等;`instanceof` 用于检测对象是否属于某个类的实例;自定义类型可以通过关键字实现类型谓词函数,确保变量是特定类型。文章通过实例详细解释了四种类型守卫的用法。
摘要由CSDN通过智能技术生成

类型守卫

在前几篇介绍了断言,在使用断言时我们已经确定了变量的类型,确定该类型时一定存在(否则则会欺骗编译,运行时报错),那么为什么还要类型守卫呢?因为类型断言还是需要借助类型守卫的,类型守卫主要是用来判断未知类型是不是所需要的类型。 类型守卫主要包括四种方式:

  • in
  • typeof
  • instanceof
  • 自定义类型

1、in- 定义属性场景下内容的确认

先写两个接口Teacher、Student,然后将这两个接口进行联合声明,使用in来判断属性是否在传递的参数中,然后分别作输出。 缺点用 in 关键字缩小数据类型必须有一个独特的属性作为判别标准,否则不能用 in 关键字

interface Teacher{ name:string; courses:string;
}
interface Student{ name:string; study:string;
}
type Class = Teacher | Student;
function getInfo(val:Class){ //此时val类型缩小为Teacher类型 if('courses' in val){console.log(val.courses) } //此时val类型缩小为Student类型 if('study' in val){console.log(val.study) }
}
getInfo({ name: 'student', study: "Philosophy" });
//打印结果为Philosophy,因为传参中含有
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值