You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:09:03