TypeScript中如何定义存储双人信息的非数组式数据模型类?
可以采用你示例中的模型类形式,且有更优写法
当然可以用你给出的persons类结构来存储两人信息,完全适配你“固定传递恰好两人数据”的场景,这种非数组结构在Observable传递和组件接收时,确实能省去数组操作的麻烦,直接通过属性名(比如instance.person1Name)访问数据,逻辑更直观。
不过你当前的写法存在字段重复的问题,后续如果要给人员信息新增属性(比如性别、手机号),需要重复添加person1Xxx和person2Xxx两组字段,维护成本较高。推荐你复用通用Person类来优化这个模型,既保留非数组的结构,又提升扩展性:
首先定义通用的Person类:
export class Person { constructor( public name: string = '', public age: number = 0, public game: string = '' ) {} }
再基于它定义存储两人信息的类:
export class Persons { constructor( public person1: Person = new Person(), public person2: Person = new Person() ) {} }
这种写法的优势:
- 避免重复字段,后续修改人员属性时只需更新
Person类,无需改动Persons类 - 类型更清晰,
person1和person2都是标准的Person类型,方便复用针对单个人员的处理逻辑 - 依然保持你想要的非数组结构,Observable传递时直接发送
Persons实例,组件接收后直接访问person1、person2属性,用法和你原来的示例一致,但扩展性更强
如果你的业务场景确实永远只会传递两人信息,这种结构比数组更贴合需求——不用考虑数组长度校验、索引越界等问题,代码可读性也更高。
内容的提问来源于stack exchange,提问作者Mr. Learner
相关产品推荐
相关产品推荐

