有人可以解释一下这2个数组联合类型是否相同? 如果它们不相同,那么每个人的正确用例是什么?
const a: string[] | number[] = [];
const b: (string|number)[] = []
答案 0 :(得分:1)
b
是字符串或 number
的数组。因此,这些不相同。 b
可以写为const b: (string | number)[] = [];
。但是,这允许使用const b: (string | number)[] = [1, 'a'];
之类的混合类型,而a
则不允许。
答案 1 :(得分:1)
它们不相同。区别在于:
const a: string[] | number[] = [];
这意味着a
可以是array of strings
或array of numbers
。所以:
// Array of strings
a = ['h', 'e'];
// or Array of numbers
a = [1, 2];
const a: string|number[] = []
表示a
是string
或an array of numbers
// string
a = 'hello';
// or array of numbers
a = [1, 2];
const a: (string|number)[] = []
意味着a
是一个数组,其中数组中的每个项目都可以是number
或string
,因此:
// (string | number) array
a = ['h', 1];