TypeScript中如何将同类型字段对象的类型转换为数组类型?
解决方法
根据你的需求,分两种场景给出对应的类型转换方案:
1. 宽泛的字符串数组类型
如果只需要定义一个元素为eventType中任意值的数组,直接使用数组类型语法即可:
export type EventArrayType = eventType[]; // 也可以写成 Array<eventType>
这个类型表示数组的每个元素可以是"RAIN"、"SUN"或"CLOUDY"中的任意一个,数组长度不做限制。
2. 精确的元组类型(包含所有枚举值)
如果需要定义一个包含所有eventType成员、顺序与原event对象属性一致的固定数组,可以借助原对象的类型typeof event来构造:
export type EventExactTupleType = ReturnType<typeof Object.values<typeof event>>;
这个类型会被TypeScript推导为["RAIN", "SUN", "CLOUDY"],是固定长度、固定元素顺序的元组类型,完全匹配原对象的枚举值集合。
注意
如果严格只能依赖eventType(联合类型)而不能使用typeof event,则无法生成精确的元组类型——因为联合类型本身是无序的,TypeScript无法从联合类型反向推导出包含所有成员的固定数组结构,必须借助原对象的类型信息。
内容的提问来源于stack exchange,提问作者cassepipe
相关产品推荐
相关产品推荐

