具有getter和setter的对象上的打字稿转换问题

时间:2019-03-05 07:51:01

标签: javascript typescript casting

我对以下代码有疑问。我认为这是一个强制性的问题,但我不知道该如何解决。

interface Code {
  code: string;
  expiration: number;
}

interface IActivationCode {
  [userId: string]: Code;
}
const activationCode: IActivationCode = {
  set userId(id: string) {
    this[id] = {
      code: Math.random()
        .toString(36)
        .substring(7),
      expiration: new Date().setMinutes(new Date().getMinutes() + 30)
    };
  },
  get userId() {
    return this.id;
  }
};

您可以在此处复制代码以查看问题。 TypeScript Playground

1 个答案:

答案 0 :(得分:0)

    interface Code {
  code: string;
  expiration: number;
}

interface IActivationCode {
  [userId: string]: Code;
}
const activationCode: IActivationCode = {
  set userId(id: Code) {
     id = {
      code: Math.random()
        .toString(36)
        .substring(7),
      expiration: new Date().setMinutes(new Date().getMinutes() + 30)
    };
  },
  get userId() {
    return this.id;
  }
};

更改userId的类型将消除代码中的错误,但是我仍然对您要实现的目标感到困惑。