首页 > 解决方案 > 如何使用枚举作为类型

问题描述

我是打字稿的新手。我不是 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
        },
    }

如您所见,id 字符串值的类型与枚举相同。

在各个地方的应用程序中,它可以选择要播放的音乐类型。使用该类型,我可以找到有关要播放的音频文件的详细信息。

我想做的是创造这样的东西;我想使用 SoundTypes 枚举而不是 id 类型字符串。

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

有没有办法做类似的事情?

标签: typescriptenums

解决方案


您可以使用映射类型来映射枚举值。在这种情况下,预定义的映射类型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
  },
}

游乐场链接


推荐阅读