如何在TypeScript中将类的信息写入数组(列表)?
嘿,我来帮你搞定这个问题!你已经定义了UserDeposit类,现在要创建数组存储它的实例对吧?首先得提个小细节:你示例里写的对象用了deposit属性,但你的类里对应的是userdeposit,这个得对应上才行,不然类型会不匹配。
接下来给你两种常用的实现方式:
方法1:直接创建类实例并存入数组
这是最规范的方式,每个数组元素都是UserDeposit的真实实例,能直接调用类里的getUsername()、getDepositValue()方法:
class UserDeposit { username: string; userdeposit: number; constructor(username: string, userdeposit: number) { this.username = username; this.userdeposit = userdeposit; } getUsername(): string { return this.username; } getDepositValue(): number { return this.userdeposit; } } // 创建UserDeposit类型的数组并初始化 let deposit: UserDeposit[] = [ new UserDeposit("Test", 20), new UserDeposit("Alice", 50), new UserDeposit("Bob", 150) ]; // 测试调用类方法 console.log(deposit[0].getUsername()); // 输出 "Test" console.log(deposit[1].getDepositValue()); // 输出 50
方法2:从普通对象数组转换为类实例数组
如果你已经有了一组结构匹配的普通对象(比如从接口返回的数据),可以用map方法把它们转换成UserDeposit的实例:
// 假设这是你从后端拿到的原始数据 const rawDepositData = [ { username: "Test", userdeposit: 20 }, { username: "Charlie", userdeposit: 80 } ]; // 转换为UserDeposit实例数组 let deposit: UserDeposit[] = rawDepositData.map(item => { return new UserDeposit(item.username, item.userdeposit); }); // 同样可以正常调用类方法 console.log(deposit[1].getDepositValue()); // 输出 80
避坑提示:别直接用普通对象赋值
你一开始写的{ "username": "Test", "deposit": 20 }这种普通对象,直接放进UserDeposit[]数组里TypeScript会报错——因为它们不是类的实例,没有类的方法。就算用类型断言(as UserDeposit)绕过检查,后续调用getUsername()也会运行时出错,所以千万别这么做。
这样处理后,你的数组就完全符合需求啦!
内容的提问来源于stack exchange,提问作者iDome
相关产品推荐
相关产品推荐

