在 TypeScript 中,Record
是一个实用的工具类型,用于构造一个对象类型,其中键和值具有指定的类型。Record
类型可以让你创建一个对象,其中键的类型是你定义的某些特定键,值的类型也是你指定的类型。
Record
的类型定义如下:
type Record<K extends keyof any, T> = {
[P in K]: T;
};
这里,K
是键的类型,T
是值的类型。K
必须是 keyof any
的子类型,即可分配给任何对象键的类型。
示例
以下是使用 Record
类型的示例:
type Vehicle = "Car" | "Bike" | "Bus";
type Price = number;
const prices: Record<Vehicle, Price> = {
Car: 20000,
Bike: 1500,
Bus: 30000,
};
在此示例中,prices
对象的每个键都必须是 Vehicle
类型中定义的字符串之一(“Car”、“Bike” 或 “Bus”),并且每个值都必须是数字类型。
如果你尝试添加不在 Vehicle
类型中的键或将值设置为非数字类型,TypeScript 将报告错误。
用途
Record
类型在需要限制对象键的范围并确保所有值具有相同类型的场景中非常有用。它提供了一种简洁、表现力强的方式来定义这样的对象类型,并有助于增强代码的可读性和可维护性。