Record
Record 是 TS 内置的一个高级类型,是通过映射类型的语法来生成索引类型的:
type Record = { [P in K]: T;}
比如传入 ‘a’ | ‘b’ 作为 key,1 作为 value,就可以生成这样索引类型:
type res = {a: 1,b: 1}type res = Record
所以这里的 Record 也就是 key 为 string 类型,value 为任意类型的索引类型,可以代替 object 来用,更加语义化一点:
type res = {[x: string]: any}type res = Record
Record 与 object区别
TypeScript允许访问类型Record对象得任何属性,即使特定键未知
let a: Record;a.foo; // works
object对象上,键不会被假定为any,与Record一样,TypeScript不知道哪些密钥实际存在,但它不允许访问任何密钥
let b: object;a.foo; //error: Property "foo" does not exist on type "object" 错误:类型“object”上不存在属性“foo”
object与Object使用区别
object定义是一个对象类型,不能自动获取对象上的属性和方法
object类型只能定义对象类型,不能定义其他类型
Object 也是不可以自动获取定义的对象上的属性和方法,
但是可以获取对象自身上的属性和方法
参考;真实案例说明 TypeScript 类型体操的意义 – 知乎
TS学习 unknown、any、 object、Object 的区别使用_ts object_你还差的远呢。的博客-CSDN博客