注意:新版本不允许越界,V2.6及以前可以,但是V2.7之后不行
越界的元素
在 TypeScript 的基础类型中,元组( Tuple )表示一个 已知数量 和 类型 的数组。我们来看如下代码:
let someList: [string, number];
// 初始化赋值
someList = ['Apple', 18]; // ok
someList = ['Apple', 'BlackBerry']; // error
看到上述代码会不会有疑问,那当我们需要扩展 someList 的值的时候会怎么样呢?
let someList: [string, number];
// 初始化赋值
someList = ['Apple', 18]; // ok
someList = ['Apple', 'BlackBerry']; // error Type 'string' is not assignable to type 'number'.
someList = [['Apple', 18], 'BlackBerry']; //error Type '(string | number)[]' is not assignable to type 'string'. Type 'string' is not assignable to type 'number'.
someList[3] = 'BlackBerry' // ok
someList[4] = 19 // ok
someList[5] = false // error Type 'false' is not assignable to type 'string | number'.
从上述代码我们可以得出以下结论:
- 元组初始化赋值时,值的类型和数量必须与声明的时候一一对应
- 元组允许手动给跨界的元素复制,此时值类型为元组声明时类型的联合类型