两种类型 object
和 Record<any, any>
在我看来包括同一组有效对象,这是 typeof x === "object
的任何对象.两者有什么区别吗?
最佳答案
object
type旨在抽象出对象的任何键,而 Record<K, T>
存在专门定义类型的键。这意味着尝试访问对象属性时存在差异。
TypeScript 将允许访问 Record<any, any>
类型对象的任何属性即使具体键未知,因为第一个通用参数是 any
.
let a: Record<any, any>;
a.foo; // works
在 object
类型的对象上但是, key 不假定为 any
.与 Record<any, ...>
一样, TypeScript 不知道哪些键实际存在,但它不会允许访问任何键:
let b: object;
a.foo; // error: Property "foo" does not exist on type "object"
在 TypeScript playground 中尝试.
关于typescript - 在 typescript 中,类型 `object` 和 `Record<any, any>` 之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52245366/