如何将字符串数组转换为打字稿类型?

时间:2019-01-07 08:24:45

标签: javascript typescript

我有这个数组:

const arr = ["foo", "bar", "loo"]

我需要将其转换为打字稿类型

type arrTyp = "foo" | "bar" | "loo";

如何在打字稿中做到这一点?

1 个答案:

答案 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

的更多信息