Требуется интерфейс, чтобы иметь все свойства из enum - PullRequest
0 голосов
/ 07 апреля 2020

Есть ли способ заставить интерфейс Typescript реализовать все ключи перечисления? Мой код выглядит следующим образом:

export enum Setting {
    START_TIME = 'START_TIME_DB_KEY',
    END_TIME = 'END_TIME_DB_KEY',
    COOL_FEATURE = 'COOL_FEATURE_DB_KEY',
    SOME_EXPIRY_SETTING = 'SOME_EXPIRY_DB_KEY',
}

export type RequireAllKeys = { [key in Setting]: any; };

export interface SettingsTypeMap extends RequireAllKeys {
    [Setting.START_TIME]: number;
    [Setting.END_TIME]: number;
    [Setting.COOL_FEATURE]: boolean;
    [Setting.SOME_EXPIRY_SETTING]: Date;
}

Я хочу, чтобы мой SettingsTypeMap выдавал ошибку, если отсутствует один из ключей enum, например, если он выглядит следующим образом:

export interface SettingsTypeMap extends RequireAllKeys {
    [Setting.START_TIME]: number;
}

это должно выдать ошибку, говорящую что-то вроде "интерфейс отсутствует свойства Setting.END_TIME, Setting.COOL_FEATURE, Setting.SOME_EXPIRY_SETTING".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...