typescript中的object与Record

在vue3.0中有如下一段代码

export const isObject = (val: any): val is Record<any, any> =>
  val !== null && typeof val === 'object'

这里用到了Record<any, any>,为什么这里不用object呢?

举个例子

let a: Record<any, any>;
console.log(a.foo);

let b: object;
console.log(b.foo); // 报错:类型object上不存在foo属性

所以,在使用Record<any,any>的时候,typescript允许访问对象上的任何属性,即使属性的类型未知。而当使用object的时候,typescript不允许使用未指定类型的属性。

如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注