在没有非常了解 Record 之前,定义对象的类型,一般使用 interface。它是 TS 中定义数据结构的一种方式,用来描述对象的形状、函数类型、类的结构等。
// 基本用法
interface User {
name: string;
age: number;
isAdmin: boolean;
}
const user: User = {
name: "Alice",
age: 30,
isAdmin: true,
};
而在 TypeScript 中,提供了一个实用工具类型 --- Record,用于构建对象类型的映射。它允许我们创建一个对象类型,其中所有键的类型和值的类型都支持自定义。
1. 基本用法
Record<K, T> 类型有两个参数:
- K:键的类型(通常是 string、number 或 symbol,或者它们的联合类型)
- V:值的类型
举个 🌰
type UserRoles = 'admin' | 'user' | 'guest';
type RolePermissions = Record<UserRoles, string[]>;
const permissions: RolePermissions = {
admin: ['read', 'write', 'delete'],
user: ['read', 'write'],
guest: ['read']
};
Rec