类型守卫:判断某个key是某个对象的合法key值
/** 类型守卫:key是否是指定对象的属性 */
function isLanguageKey(key: string, object: Object): key is keyof typeof object {
return Object.prototype.hasOwnProperty.call(object, key);
}
这个一般用于对象object是其他人提供的,但是我们知道它一定会有某个key值,但是由于这个object它被类型推断为已知key的类型,比如:
{
title: "xxx",
age: "xxx"
}
当我们使用一个string
类型的key去获取它的值的时候,注意是string类型,就会得到一个any的返回值,事实上这个key就是tiltle或者age,但是ts无法正确推断出来这个值,因为key不是具体的title
或者age
,而是一个广泛的string
类型的key。
所以我们通过一个方法去判断这个key是否是属于这个对象的,然后再函数的返回类型里使用is
去判断一个变量是否是后面的类型(keyof typeof object
)。
is一般用在函数的返回值那块。
typeof可以自动拿到object
形参的类型,通过keyof
拿到类型的所有key。
分类:
TypeScript
标签:
is类型守卫keyoftypeof
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据