我想解决的代码中有一个错误。我认为它需要一个return
语句,但我已经在forEach
循环之外有了它,但它仍然抛出错误:
not all the code path return the value
如何修复下面的代码?main.ts
:
private ValidateRequestArgs(str) {
let ret: boolean = true;
// here on val its throwing tslint error not all code paths return value
str.split(',').forEach((val) => {
if (!ret) {
return false;
}
if (List.indexOf(val) > -1) {
ret = true;
} else {
ret = false;
}
});
return ret;
}
8条答案
按热度按时间vcudknz31#
抱怨是第一个if(){}缺少一个带有return语句的else{}块。你可以在tsconfig文件设置中禁用这个行为:
当然你也可以加上
但我不建议这样做,因为forEach不应该返回任何内容,例如:What does
return
keyword mean insideforEach
function?或此处:https://codeburst.io/javascript-map-vs-foreach-f38111822c0f相反,最好把第一个if()完全去掉。干杯
6psbrbz92#
tsconfig.json
50pmv0ei3#
可以通过两种方法解决此错误。
1.通过将
tsconfig.json
中的noImplicitReturns
属性编辑为false“无隐式返回”:错误
1.通过为方法中的每个路径添加一个return语句。如果你有10个if条件,那么你必须添加10个return语句。这看起来很奇怪,但是typescript建议为每个路径都添加return语句。
这里我们可以通过使用lambda表达式来避免路径数。
3z6pesqy4#
我不知道tslint为什么要抱怨,但你可以把整件事写得更优雅:
或ES6:
wrrgggsh5#
如果forEach函数中有返回值,则它会将该函数识别为具有整个函数的返回类型。
这样编写循环没有问题:
wmvff8tz6#
foreach不需要返回任何东西;必须从foreach和edit中删除关键字'return',错误指向:
0s0u357o7#
您可以定义函数的传回值,如下所示:
yi0zb3m48#
传递给forEach的函数体有一个隐式签名
any -> boolean
,因此tslint似乎希望您更静态地处理它,并在所有代码路径上返回boolean。