TypeScript-输入'number |未定义”不能分配给“数字”类型

时间:2019-06-17 21:10:21

标签: typescript

这是我的代码:

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中)的情况下解决此错误?

1 个答案:

答案 0 :(得分:2)

Array.prototype.pop()返回类型编号或未定义。这就是数字未定义的来源。

在对象上执行pop()时,如果array.length> 0,则返回一个数字;如果array.length = 0,则返回未定义。

您应该检查是否myArr.pop() !== undefined

-或-

a: number | undefined;