我有文本字符串数组,并且在其他地方使用它。如何将其转换为联合类型?
获取方式:
type Message = 'hello world' | ...
来自
const messages = ['hello world', ...]
答案 0 :(得分:2)
这很棘手,因为Flow应该为messages
的类型推断带有文字字符串元素的元组类型,但是相反,它将类型推断为Array<string>
。这意味着包含每个字符串内容的信息将丢失。从理论上讲,您应该能够编写type Message = $ElementType<typeof messages, number>
,但是从Flow v0.89.0开始,该功能不起作用。
您可以做的是,以Flow确实保留文字类型信息(例如对象中的键)的形式表示消息,并从中提取消息的类型和列表:
const messageMap = {
"hello world": 1, // you can use whatever you want for the values
"goodbye": 2
}
const messages = Object.keys(messageMap)
type Message = $Keys<typeof messageMap>