实现 Record 工具类

158 阅读1分钟

为对象声明类型

in: 遍历对象类型的属性或联合类型

//声明一个对象,并为其声明类型
const person: {
  [key in "name" | "age"]: number | string;
} = {
  name: "小狗",
  age: 34,
};

//注意:上面的类型不能以这种方式声明
const p: {
//索引签名参数类型不能为文本类型或泛型类型。请考虑改用映射的对象类型。
  [key: "name" | "age"]: number | string;
} = {
  name: "小狗",
  age: 34,
};

使用Record声明对象类型

Record<key,value>

key: 对象属性类型 value: 对象属性值的类型


type keys = "name" | "age";
const Animal: Record<keys, number | string> = {
  name: "小狗",
  age: 34,
};

自己实现一个 Record

//要求 属性 要符合 联合类型 string | number | symbol
//属性值可以接收任何类型
type myRecord<K extends string | number | symbol, T> = {
  [P in K]: T;
};

type keys = "name" | "age";
const Animal: myRecord<keys, number | string> = {
  name: "小狗",
  age: 34,
};