我有这个数组:
const arr = ["foo", "bar", "loo"]
我需要将其转换为打字稿类型
type arrTyp = "foo" | "bar" | "loo";
如何在打字稿中做到这一点?
答案 0 :(得分:6)
问题在于arr
不会在数组中保留文字类型,它将被推断为string[]
。如果使用函数强制推断字符串文字类型,则提取类型很简单:
function tuple<T extends string[]>(...o: T) {
return o;
}
const arr = tuple("foo", "bar", "loo")
type arrTyp = typeof arr[number]; // "foo" | "bar" | "loo"
该函数强制编译器为arr
推断字符串文字的元组。因此arr
将被键入为["foo", "bar", "loo"]
。然后,我们可以使用类型查询来获取元组中元素的并集。您可以阅读有关类型查询here