Record的完整定义如下
type Record<K extends keyof any, T> = {
[P in K]: T;
};
首先要先理解keyof any是啥。
type KEY = keyof any //即 string | number | symbol
因为不管什么类型,它的key总是string,number,symbol中的一种。
let a: any;
a['a'] //ok
a[0] // ok
a[Symbol()] //ok
a[{}] // error
接下来就好理解了,[P in K]
的意思是对象的key可以取 string,number,symbol.
e.g
let a:Record<string,any>