9

我想使用以下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两者?

我正在使用打字稿 3.2.2

谢谢

4

1 回答 1

4

您可以使用 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"
};
于 2019-02-16T15:26:59.707 回答