这两种类型object,并Record<any, any>在我看来,包括相同的一组有效的对象,这是任何事情上typeof x === "object。两者之间有什么区别吗?
该object类型是为了抽象掉的对象的任何键,而Record<K, T>存在于专门定义的类型的键。这意味着在尝试访问对象属性时会有所不同。
Record<any, any>即使特定键未知,TypeScript 也将允许访问类型对象的任何属性,因为第一个泛型参数是any.
let a: Record<any, any>;
a.foo; // works
Run Code Online (Sandbox Code Playgroud)
object然而,在一个类型的对象上,键不被假定为any。与 一样Record<any, ...>,TypeScript 不知道实际存在哪些键,但它不允许访问任何键:
let b: object;
a.foo; // error: Property "foo" does not exist on type "object"
Run Code Online (Sandbox Code Playgroud)
在TypeScript playground 中尝试一下。
| 归档时间: |
|
| 查看次数: |
1449 次 |
| 最近记录: |