我有一个工会,看起来像这样:
type MyUnion = string[] | number[];
所以它总是一个数组,字符串或数字。
我想知道我正在处理的数组是字符串数组还是数字数组,但是类型收缩似乎不起作用:
const arr: string[] | number[] = [];
if (typeof arr[0] === "string") {
// arr has the type (string[] | number[])
}
那么,如何将narrow arr
输入到联合体的类型之一呢?
Playground:https://www.typescriptlang.org/play?#code/FAMwrgdgxgLglgewgAhgUwM4wGKQBQCGATkQFzJZFwQDmA2gLrIA+yEYAtgEZpGMCU5AG4I4AE2ABvYMlnI4IZHhgBPAA5oEi4nwAMTALxHkAIkrUaJ-smly7yHTLkBfYK6A
2条答案
按热度按时间bf1o4zei1#
可以使用类型保护。
kiayqfof2#
您可以使用typeguard来实现这一点:
或者你也可以用通用的方法来检查数组是否是字符串数组
根据你的代码