【问题标题】:Create interface using enum keys in Typescript在 Typescript 中使用枚举键创建接口
【发布时间】:2019-10-18 03:43:08
【问题描述】:

我想用我的枚举来做一个接口。

仅仅因为一个应该改变,另一个也需要改变。 我想更仔细地更改代码。

枚举的键是同一个接口的键。

export enum SmsReplaceKeyEnum {
  STAY_DATE = "%STAYDATE%",
  STAY_DATE_YMD = "$STAYDATEYMD%",
  ROOMTYPE_N_COUNT = "%ROOMTYPENCOUNT%",
  BOOKERNAME = "%BOOKER%",
  TOTAL_PRICE = "%TOTALPRICE%"
}

interface IPareser {
  STAY_DATE: string;
  STAY_DATE_YMD: string;
  ROOMTYPE_N_COUNT: string;
  BOOKERNAME: string;
  TOTAL_PRICE: string;
}

我也有这个

export const SmsReplaceKeyEnumKeys = [
  "STAY_DATE",
  "STAY_DATE_YMD",
  "ROOMTYPE_N_COUNT",
  "BOOKERNAME",
  "TOTAL_PRICE"
];

我试过了

interface IPareser {
  [key in SmsReplaceKeyEnumKeys]: string;
}

interface IPareser {
  [key keyof SmsReplaceKeyEnumKeys]: string;
}

最终目标是使用列表中的所有键创建一个对象的类型。

【问题讨论】:

    标签: typescript enums interface


    【解决方案1】:

    您不能在 TS 中的接口声明中使用 mapped types 语法(现在,最高版本为 3.5)。您可以像这样直接从您的枚举中创建所需的类型:

    type Parser = {
      [K in keyof typeof SmsReplaceKeyEnum]: string;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2016-09-03
      • 2018-03-31
      • 2015-08-07
      • 1970-01-01
      • 2019-06-03
      相关资源
      最近更新 更多