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

标签 typescript

两种类型 objectRecord<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/

相关文章:

javascript - Typescript 使用类型检查和泛型之间的区别

reactjs - 使用 Route render 时,ReactComponent 没有与类型 'IntrinsicAttributes & { children?: ReactNode; }' 相同的属性

javascript - 我如何像 Java 包一样组织我的 Angular 应用程序文件夹?

javascript - 如何将本地文件读入字符串

javascript - 如何在 Typescript 中更新数组列表的对象?

javascript - tslint 创建错误,但功能方面它工作正常

Angular 2 rxjs switchmap 返回 Observable<Object>

typescript 错误消息错误 TS2173 : Generic type references must include all type arguments

typescript - 设置 Ionic 2 Cordova 相机插件

typescript - 如何查看TypeScript如何计算类型?