递归函数在角度/打字稿中不起作用:"is referenced directly or indirectly in one of its return expressions"



我正在为Angular项目将Dart中的一个递归函数转换为TypeScript。违规线路是

return this.reduceNumber(firstNameNumberReduced);

错误消息为

'reduceNumber' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.

完整的功能是

reduceNumber(firstNameNumber: number = 0) {
var firstNameNumberReduced: number = 0;
if (firstNameNumber == 11 || firstNameNumber == 22 || firstNameNumber <= 9) {
return firstNameNumber; // we're done
} else if (firstNameNumber > 9) {
var firstNameNumberCompoundList = firstNameNumber.toString().split(""); // string splits into strings, not integers
firstNameNumberCompoundList.forEach((element) => {
// iterate over the list
var notAstring = parseInt(element);
firstNameNumberReduced = firstNameNumberReduced + notAstring; 
});
return this.reduceNumber(firstNameNumberReduced); // recursive, ERROR HERE
} else {
console.error("Error in reduceNumber function.");
return
}
}

错误消息说明了两件事。这意味着返回的值没有类型。但我设置了返回变量firstNameNumberReduced:的类型

var firstNameNumberReduced: number = 0;

第二条错误消息说返回表达式直接递归调用函数。嗯,是的,这就是我要做的!:-(

谢谢@about14sheep!

reduceNumber(firstNameNumber: number = 0): number {
// code
}

奏效了。我不知道你可以指定函数的返回类型。

相关内容

最新更新