hus*_*ain 15 javascript typescript tslint
我在尝试解决的代码中有错误。我认为它需要一个return
语句,但我已经在forEach
循环之外,但它仍然抛出错误:
not all the code path return the value
Run Code Online (Sandbox Code Playgroud)
如何修复下面的代码?
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;
}
Run Code Online (Sandbox Code Playgroud)
the*_*Emu 38
抱怨是第一个 if(){} 缺少带有 return 语句的 else{} 块。您可以在 tsconfig 文件设置中禁用此行为:
"noImplicitReturns": false,
Run Code Online (Sandbox Code Playgroud)
当然你也可以加
else {return ...}
Run Code Online (Sandbox Code Playgroud)
但我不建议这样做,因为 forEach 不应该返回任何内容,例如此处所述: `return` 关键字在 `forEach` 函数中意味着什么? 或在这里:https : //codeburst.io/javascript-map-vs-foreach-f38111822c0f
相反,最好完全摆脱第一个 if()。干杯
Cod*_*ker 10
您可以通过两种方式解决此错误。
通过将noImplicitReturns
属性编辑为 falsetsconfig.json
“noImplicitReturns”:假
这里我们可以通过使用 lambda 表达式来避免路径的数量。
private ValidateRequestArgs(str) {
return str.split(",").every(el => List.includes(el));
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么 tslint 会抱怨,但你可以把整个事情写得更优雅:
return str.split(",").every(el => List.includes(el));
Run Code Online (Sandbox Code Playgroud)
或 ES6:
return str.split(",").every(el => List.indexOf(el) > -1);
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以为您的函数定义返回值,如下所示:
functionName: (variableName: string): string | void => {
if (variableName === "a") {
return "link";
}
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33525 次 |
最近记录: |