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

如何在TypeScript中从联合类型获取字符串选项数组?

获取TypeScript联合类型对应的字符串数组

方案一:从数组推导类型(推荐)

先定义运行时数组,再基于数组推导联合类型,避免重复维护:

// 用as const固定数组元素的字面量类型
const keyboardTypes = ['default', 'email-address', 'numeric', 'phone-pad', 'number-pad', 'decimal-pad'] as const;

// 从数组元素类型生成联合类型
export type KeyboardType = typeof keyboardTypes[number];

这种方式的优势是数组是唯一数据源,修改数组时联合类型会自动同步,不会出现类型和数组不匹配的问题。

方案二:已有类型时对齐数组

如果已经存在KeyboardType联合类型,可通过类型约束确保数组元素完全匹配类型:

export type KeyboardType = 'default' | 'email-address' | 'numeric' | 'phone-pad' | 'number-pad' | 'decimal-pad';

// satisfies关键字(TS 4.9+)确保数组元素符合类型,as const保留字面量类型
const keyboardTypes = ['default', 'email-address', 'numeric', 'phone-pad', 'number-pad', 'decimal-pad'] as const satisfies readonly KeyboardType[];

当KeyboardType类型修改后,数组如果没有同步更新,TypeScript会直接报错,强制保持两者一致。

注意事项

TypeScript是编译时类型系统,无法直接从编译时类型生成运行时数组,必须手动定义数组并通过类型约束对齐,上述两种方案都是为了在手写数组的同时,利用TS的类型检查避免不一致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:24:59