将 string[] 字面量转换为 string 类型字面量

Convert string[] literal to string type literal

我有一个字符串数组:

let foo = ["bar", "baz"];

我希望执行类似于 keyof type foo 的操作,但针对的是数组而不是对象:

type DESIRED_RESULT = "bar"|"baz";

有什么方法可以将数组中所有唯一的字符串转换为一个类型吗?

foo 被推断为 string[].
数组值根本不进入类型系统,所以这是不可能的。

如果你把它放在类型系统中,它becomes possible:

let foo: ["bar", "baz"];
let bar: typeof foo[number] = "";

Type '""' is not assignable to type '"bar" | "baz"'.