为对象声明类型
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,
};