在打字稿中定义数组联合类型的正确方法

时间:2020-11-10 23:05:40

标签: typescript

有人可以解释一下这2个数组联合类型是否相同? 如果它们不相同,那么每个人的正确用例是什么?

const a: string[] | number[] = [];
const b: (string|number)[] = []

2 个答案:

答案 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 stringsarray of numbers。所以:

// Array of strings
a = ['h', 'e'];
// or Array of numbers 
a = [1, 2];

const a: string|number[] = []

表示astringan array of numbers

// string
a = 'hello';
// or array of numbers
a = [1, 2];

const a: (string|number)[] = []

意味着a是一个数组,其中数组中的每个项目都可以是numberstring,因此:

// (string | number) array
a = ['h', 1];