例如:
let myTuple: Array<[number[], number[]]> = [];
const my3dArray = [
[[1, 2], [3, 4]],
[[5, 6], [7, 8]],
];
myTuple = my3dArray;
出现错误:number[][][] not assignable to [number[], number[]][]
使用TypeScript 3.0.1时
在第二行中,您将创建一个变量,该变量将自动选择分配值的类型:
const my3dArray = [
[[1, 2], [3, 4]],
[[5, 6], [7, 8]],
];
分配值的类型假定为number[][][]
,这是正确的。
然后,将该类型的值(再次假定为number[][][]
)分配给具有更严格类型的变量,Array<[number[], number[]]>
并且上一操作中的类型未通过检查。此时值不再重要,仅生成的类型重要。
显式类型分配可解决以下问题:
let myTuple: Array<[number[], number[]]> = [];
const my3dArray = [
[[1, 2], [3, 4]],
[[5, 6], [7, 8]],
] as Array<[number[], number[]]>;
myTuple = my3dArray;
或另一个选项是在赋值之前定义变量的类型:
let myTuple: Array<[number[], number[]]> = [];
const my3dArray: Array<[number[], number[]]> = [
[[1, 2], [3, 4]],
[[5, 6], [7, 8]],
];
myTuple = my3dArray;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句