首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Typescript中,类型`object`和`Record<any,any>`之间有区别吗?

在Typescript中,类型`object`和`Record<any,any>`之间有区别吗?
EN

Stack Overflow用户
提问于 2018-09-09 22:13:51
回答 1查看 2.5K关注 1票数 10

在我看来,objectRecord<any, any>这两种类型都包含相同的有效对象集,这是typeof x === "object的任何内容。这两者之间有什么区别吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 01:04:45

object type旨在抽象出对象的所有键,而Record则专门定义类型的键。这意味着在尝试访问对象属性时,存在差异。

TypeScript将允许访问类型为Record<any, any>的对象的任何属性,即使特定的键未知,因为第一个泛型参数是any

代码语言:javascript
复制
let a: Record<any, any>;
a.foo; // works

但是,在类型为object的对象上,键不会被假定为any。与Record<any, ...>一样,TypeScript不知道哪些密钥实际存在,但它不允许访问任何密钥:

代码语言:javascript
复制
let b: object;
a.foo; // error: Property "foo" does not exist on type "object"

TypeScript playground中尝试一下。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52245366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档