创建一个键为枚举值的接口

时间:2019-10-13 00:17:34

标签: javascript typescript typescript-typings typescript2.0

说我有一个枚举

export enum status {
  PENDING = 'pending',
  SUCCESS = 'success',
  FAIL = 'fail'
}

假设此枚举在多个地方使用(即,我不能仅将其替换为其他内容)。但是,我确实希望其他开发人员将来能从中添加/删除状态。

现在,我有一个对象obj,我希望如下所示

let obj = {
    pending: 10,
    success: 20,
    fail: 0

}

我想为对象定义一个接口。我可以做类似的事情

interface objInterface = {
   [key: string]: number;
}

但是,现在有人可以将obj设置为

obj = {
  flip: 3333
}

我不希望这种情况发生,我只希望如上面的枚举中所定义的,等待,成功,失败。

理想情况下,我会做类似的事情

interface objInterface = {
   [key: TransactionStatus] : number;
}

但这不起作用-它会出现此错误:

  

(参数)键:TransactionStatus索引签名参数类型   不能是联合类型。考虑使用映射的对象类型   ts。(1337)

做到这一点的最佳方法是什么?

我尝试过

type objType = {
  [K in keyof typeof status]: number;
};

但是当我将鼠标悬停在它上面时,我看到它转换为

type objType = {
  readOnly PENDING: number,
  readOnly SUCCESS: number,
  readOnly FAIL: number
}

1 个答案:

答案 0 :(得分:1)

知道了

python3
dateparser