/** 类型守卫: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

评论

暂无评论数据

暂无评论数据

目录