typescript 'Array.prototype.push`对传递的元素使用什么原型函数

0g0grzrc  于 2022-11-18  发布在  TypeScript
关注(0)|答案(1)|浏览(120)

我有一个解析器类,它可以做一些数据验证,我也想用它,这样它就可以被推到一个数组中,显然我不想把类而是一个特定的对象结构推到数组中。

type RoleReward = {
  roleId: Snowflake;
  rewardName: string;
  redeemed: boolean;
}

const resolver = new BaseRoleResolver();
const allRewards = new Array<RoelReward>();

allRewards.push(resolver);

和冲突解决程序都使用此基类

export class BaseRoleResolver {
  roleId: Snowflake;
  rewardName: string;
  redeemed: boolean = false;

  (...)

  valueOf() {
    return {
      roleId: this.roleId,
      rewardName: this.rewardName,
      redeemed: this.redeemed,
    };
  }
}

我可以使用Javascript调用类上的一些原型函数吗?我可以覆盖这些函数,以返回自定义对象格式,而不是整个类对象?
编辑:阐明了第一个代码片段

qyyhg6bp

qyyhg6bp1#

Array.prototype.push在传递的元素上使用什么原型函数
无。它只是把你传递给它的任何值放入数组中。
我是否可以使用Javascript在对象上调用一些方法,然后覆盖这些方法?
不,不,不
我不想把类而是一个特定的对象结构推入数组。
然后,您必须编写代码,使其执行以下操作:

for (const resolver of roleResolvers) {
    if (
      (await resolver.qualifiesForReward(validOrders, email)) &&
      !resolver.alreadyRedeemed(allRewards)
    ) {
      allRewards.push(resolver.valueOf());
//                             ^^^^^^^^^
    }
  }

相关问题