Как использовать enum как type - PullRequest
0 голосов
/ 30 января 2020

Я новичок в машинописи. Я не уверен на 100%, как это объяснить.

У меня есть такое перечисление.

export enum SoundTypes {
    NORMAL_REEL_SPIN,
    BUTTON_CLICK,
}

У меня есть еще такие подробности удержания.

static AudioFileInfo: { [id: string]: IAudioFileData } = {
        "NORMAL_REEL_SPIN": {
            fileName: "reelspin_music",
            volume: 0.1,
            inPrimary: true
        },
        "BUTTON_CLICK": {
            fileName: "El_ButtonGeneral1",
            volume: 0.1,
            inPrimary: true
        },
    }

Как вы можете видеть, тип значения строки идентификатора совпадает с enum.

Внутри приложения в разных местах выбирается, какой тип музыки c играть. Используя этот тип, я нахожу подробности об аудиофайле для воспроизведения.

я хочу создать нечто подобное; вместо строки типа id я хочу использовать перечисление SoundTypes.

static AudioFileInfo: { [id: SoundTypes ]: IAudioFileData } = {

Есть ли способ сделать что-то подобное?

1 Ответ

1 голос
/ 30 января 2020

Вы можете использовать сопоставленный тип для отображения значений перечисления. В этом случае предопределенный сопоставленный тип Record должен делать:

export enum SoundTypes {
  NORMAL_REEL_SPIN,
  BUTTON_CLICK,
}

type IAudioFileData = {}
const AudioFileInfo: Record<SoundTypes, IAudioFileData> = {
  [SoundTypes.NORMAL_REEL_SPIN]: {
    fileName: "reelspin_music",
    volume: 0.1,
    inPrimary: true
  },
  [SoundTypes.BUTTON_CLICK]: {
    fileName: "El_ButtonGeneral1",
    volume: 0.1,
    inPrimary: true
  },
}

Playground Link

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