typescript - 如何使用枚举作为类型
问题描述
我是打字稿的新手。我不是 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 } = {
有没有办法做类似的事情?
解决方案
您可以使用映射类型来映射枚举值。在这种情况下,预定义的映射类型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
},
}
推荐阅读
- java - 将 Mac 键盘快捷键映射到在 Windows 上运行的 Intellij IDEA
- django - Sorl-Thumbnail 中的 URL 序列化性能问题
- string - 检查文件中是否存在多行字符串
- firebase - 如何找到图像路径?
- python - Selenium - 访问离线网站后如何继续使用 url 列表?
- javascript - 在 NODEJS 中批量合并图像
- deployment - 使用 Actions 和 FTP Deploy 部署更大文件库的 GitHub
- javascript - 图片未显示在表单提交上的文本上
- python - 选择多列并分组
- c# - 在 Unity 中禁用脚本时出现 CS1061 错误