You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何用首字母大写字符串索引QuestionType枚举(禁用if/case)

无需分支语句映射首字母大写字符串到枚举

你可以通过将服务器返回的字符串转换为小写,直接利用枚举的键值映射特性来实现,完全不需要if或case语句:

TypeScript 实现

enum QuestionType {
  text,
  recording,
  goal,
}

// 模拟服务器返回的字符串
const serverResponse = "Recording";

// 转小写后直接索引枚举
const targetType = QuestionType[serverResponse.toLowerCase() as keyof typeof QuestionType];

这里的类型断言as keyof typeof QuestionType是为了让TypeScript确认转换后的字符串属于枚举的合法键,避免类型报错。

JavaScript 实现

如果是纯JS环境,不需要类型处理,直接转小写索引即可:

const QuestionType = {
  text: 0,
  recording: 1,
  goal: 2,
};

const serverResponse = "Goal";
const targetType = QuestionType[serverResponse.toLowerCase()];

原理很简单:TypeScript的枚举会编译成包含正向(键到值)和反向(值到键)映射的对象,而纯JS的枚举对象本身就是键值对结构。只要把服务器返回的字符串格式统一成和枚举键一致的小写形式,就能直接通过索引访问到对应的枚举值。

内容的提问来源于stack exchange,提问作者DaraJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:24:55