设计思路
- 定义基础类型:将用户数据按不同部分拆分为基础类型,如基本信息、权限信息、历史记录类型。
- 组合类型:使用
interface
将基础类型组合成完整的用户数据类型。
- 类型别名:为不同模块对用户数据的操作定义类型别名,增强类型安全性。
- 扩展性:通过接口的扩展方式,方便未来添加新的用户属性。
关键代码示例
// 1. 定义基本信息类型
type BasicInfo = {
name: string;
age: number;
};
// 2. 定义权限信息类型
type PermissionInfo = {
role: string;
accessibleFunctions: string[];
};
// 3. 定义历史记录类型
type HistoryRecord = {
loginHistory: string[];
operationHistory: string[];
};
// 4. 组合成完整的用户数据类型
interface UserData {
basicInfo: BasicInfo;
permissionInfo: PermissionInfo;
historyRecord: HistoryRecord;
}
// 5. 为某个模块操作特定用户数据定义类型别名
type UserModuleData = Pick<UserData, 'basicInfo' | 'permissionInfo'>;
// 示例函数,展示类型安全访问
function printUserBasicInfo(user: UserData) {
console.log(`Name: ${user.basicInfo.name}, Age: ${user.basicInfo.age}`);
}
// 未来添加新属性示例
interface ExtendedUserData extends UserData {
newProperty: string;
}