Typescript: используйте значения `enum` как` type` - PullRequest
0 голосов
/ 15 февраля 2019

Я хотел бы использовать следующие значения enum:

export enum GenFormats {
    SHORT_LOWER = 'm/f', SHORT_UPPER = 'M/F', FULL = 'Male/Female'
};

как указано ниже:

export interface IGenderOptions {
    format: 'm/f' | 'M/F' | 'Male/Female'
};

с использованием извлечения / определения типа что-то вроде:

{{some type cast/logic}}<GenFormats>    // Outputs: 'm/f' | 'M/F' | 'Male/Female'

Обновленный вопрос:

Вот мой код:

export enum EGenderFormats {
    SHORT_LOWER = 'm/f', SHORT_UPPER = 'M/F', FULL = 'Male/Female'
};

export interface IGenderFormats {
    SHORT_LOWER: 'm/f'; SHORT_UPPER: 'M/F'; FULL: 'Male/Female';
};

export interface IGenderOptions {
    format: IGenderFormats[keyof IGenderFormats]
};

const DEFAULTS: IGenderOptions = {
    format: EGenderFormats.FULL
};

Мой вопрос: как я могу использовать одну сущность * enum EGenderFormats или interface IGenderFormats вместооба?

Я использую Typescript 3.2.2

Спасибо

1 Ответ

0 голосов
/ 16 февраля 2019

Вы можете использовать Enum как тип:

export enum EGenderFormats {
  SHORT_LOWER = "m/f",
  SHORT_UPPER = "M/F",
  FULL = "Male/Female"
}

type SGenderOptions = "m/f" | "M/F" | "Male/Female"

export interface IGenderOptions {
  format: EGenderFormats | SGenderOptions;
}

const DEFAULTS: IGenderOptions = {
  format: EGenderFormats.FULL
};

const OTHER_DEFAULTS: IGenderOptions = {
  format: "M/F"
};
...