【问题标题】:Mapping Enum to Type将枚举映射到类型
【发布时间】:2018-08-01 13:26:20
【问题描述】:

我正在尝试在枚举上使用mapped type

export enum CurrencyType {
  USD = "USD",
  AUD = "AUD",
  GBP = "GBP",
  CAD = "CAD"
}

实现这种类型:

type Rates = {
  AUD: number;
  CAD: number;
  GBP: number;
  USD: number;
}

我想我可以这样做:

type Rates = {
  [P in keyof CurrencyType]: number;
};

但这会导致:

type Rates = {
    toString: number;
    charAt: number;
    charCodeAt: number;
    concat: number;
    indexOf: number;
    lastIndexOf: number;
    localeCompare: number;
    match: number;
    replace: number;
    //...
}

我尝试使用union literals 而不是enum

export type CurrencyType = "USD" | "AUD" | "GBP" | "CAD";` 

但它给出了相同的结果。

我唯一能开始工作的就是这样做:

type Rates = {
  [P in typeof CurrencyType.AUD | CurrencyType.USD | CurrencyType.GBP | CurrencyType.CAD]: number;
};

但显然这违背了整个目的!

有没有办法做到这一点?

【问题讨论】:

    标签: typescript mapped-types


    【解决方案1】:

    哇,它就在我面前。和往常一样,我过于复杂了,没有仔细阅读文档。

    type Rate = {
      [P in CurrencyType]: number;
    };
    

    我会留下这个,以防它帮助别人

    【讨论】:

    • 感谢您留下来帮助一个陌生人 :-)
    猜你喜欢
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    相关资源
    最近更新 更多