类型接口设计
// 定义用户权限接口
interface UserPermissions {
viewProducts: boolean;
participateInNormalDiscount: boolean;
participateInExclusiveActivities: boolean;
}
// 普通用户接口
interface NormalUser extends UserPermissions {
userType: '普通用户';
}
// VIP用户基础接口
interface VIPUser extends UserPermissions {
userType: 'VIP用户';
vipLevel: '青铜VIP' | '白银VIP' | '黄金VIP';
}
// 青铜VIP用户接口
interface BronzeVIP extends VIPUser {
vipLevel: '青铜VIP';
}
// 白银VIP用户接口
interface SilverVIP extends VIPUser {
vipLevel: '白银VIP';
}
// 黄金VIP用户接口
interface GoldVIP extends VIPUser {
vipLevel: '黄金VIP';
}
// 用户联合类型
type User = NormalUser | BronzeVIP | SilverVIP | GoldVIP;
设计原则阐述
- 单一职责原则:每个接口只负责描述一种特定类型用户的状态和权限,例如
NormalUser
接口只关注普通用户相关信息,VIPUser
接口及其子接口分别负责不同等级VIP用户的信息,这样使得代码结构清晰,易于维护和扩展。
- 接口隔离原则:将用户权限抽象到
UserPermissions
接口,然后不同类型用户通过继承该接口获取相应权限,避免了大而全的接口设计,保证每个用户类型只拥有与其相关的权限接口,减少不必要的依赖。
- 可扩展性:采用接口继承和联合类型的方式,方便未来对新的用户类型(如钻石VIP等)或新的权限进行扩展,只需要新增相应接口并添加到
User
联合类型中即可。