类型 'number | undefined' 无法分配给类型"数字",打字稿错误?


function example(queue: number[]): number[] {
const curLength: number = queue.length
for (let i = 0; i < curLength; i++) {
**const cur: number = queue.shift()**
};
}

错误是星号所在的地方。使用if语句来检查未定义将是多余的,因为从代码中可以很清楚地看到,cur不能是undefined,因为我迭代了队列的长度。

在这种情况下,解决错误的合适方法是什么?

原因是shift()可以返回元素(anumber),或者如果数组为空(源)则返回undefined。在此例中,签名为shift() : number | undefined。一个好的IDE,或者Typescript Playground,会告诉你这些。

如果数组为空,编译器无法确定语句不会被执行,因此它仍然可以解释shift()返回undefined的情况。但是,作为一个开发人员,如果你确信你的程序是正确的,你可以告诉编译器,你知道这个函数调用永远不会返回undefined,方法是把!("非空断言操作符",更多信息在这里)附加到有问题的表达式:

const cur: number = queue.shift()!;

或者改变cur:

的类型
const cur : number | undefined = queue.shift();

相关内容

最新更新