这是我的代码:
var a:number;
a = 4;
var myArr: number[];
myArr = [1,2,3];
myArr.push(1);
a = myArr.pop();
当我将“模块”(在tsconfig.json文件中)设置为“系统”或“ amd”进行编译以允许将输出捆绑到“ outFile”位置时,出现此错误:
hello-world.ts:23:1-错误TS2322:键入“数字|未定义”不是 可分配给“数字”类型。类型“未定义”不可分配给 输入“数字”。
a = myArr.pop();
它从哪里得到“未定义”类型?另外,如何在不将“ strict”设置为false(在我的tsconfig.json中)的情况下解决此错误?
答案 0 :(得分:2)
Array.prototype.pop()
返回类型编号或未定义。这就是数字未定义的来源。
在对象上执行pop()时,如果array.length> 0,则返回一个数字;如果array.length = 0,则返回未定义。
您应该检查是否myArr.pop() !== undefined
-或-
a: number | undefined;