type Arr = number[] | string[];
type Arr1 = Array<string | number>;
const arr: Arr = [];
arr.push('123');
请问,为何使用Arr1
不报错,Arr
报错?
type Arr = number[] | string[];
type Arr1 = Array<string | number>;
const arr: Arr = [];
arr.push('123');
请问,为何使用Arr1
不报错,Arr
报错?
按照你的想法,是你的语法问题,需要用联合类型,这样就可以了
type Arr = (string|number)[];
let arr:Arr = [];
arr.push("123");
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
第一个类型表示这个数组要么全都是
number
,要么全都是string
,二者不可交叉出现。第二个类型表示这个数组每个元素要么是
number
,要么是string
,二者可以交叉出现。而你用第一种类型的时候:
此时
arr
里到底应该必须只存number
还是必须只string
是未知的,所以后面你必须先断言才可以 push。