簡體   English   中英

TypeScript:有沒有辦法使用枚舉以編程方式構造接口

[英]TypeScript: is there a way to programatically construct an interface using an enum

所以我有一個定義為這個的enum

enum EventType {
  JOB,
  JOB_EXECUTION,
  JOB_GROUP
}

我需要創建一個這樣的界面

interface EventConfigurations {
  JOB: {
    Enabled?: boolean;
  };

  JOB_EXECUTION: {
    Enabled?: boolean;
  };

  JOB_GROUP: {
    Enabled?: boolean;
  };
}

鑒於它們之間存在一對一的映射,我想知道是否有辦法基於enum生成此interface 目前我只是硬編碼它

您可以將其創建為類型(而不是接口),如下所示:

type EventConfigurations = Record<keyof typeof EventType, { Enabled?: boolean }>

解釋:

  • enum上使用typeof會給出一個類型,其每個字符串成員作為鍵和數字作為值。
  • 在該類型上使用keyof會給出一個包含每個鍵的聯合類型。
  • Record<K, V>是從類型K到類型V的映射。

操場

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM