javascript - Hvordan fikse problemet der ikke alle kodeveier returnerer en verdi?
Jeg har en feil i koden som jeg prøver å løse. Jeg tror det trenger en return-setning, men jeg har allerede det utenfor forEach-løkka, men det gir fortsatt feilen:
not all the code path return the value
Hvordan fikse koden nedenfor?
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;
}
Svar #1
Klagen er at den første if(){} mangler en else{}-blokk med en return-setning. Du kan deaktivere denne oppførselen i tsconfig.json:
compilerOptions:{
:
"noImplicitReturns": false,
:
}
Selvfølgelig kunne du også legge til
else {return ...}
Men jeg vil ikke anbefale det, siden forEach ikke skal returnere noe, som for eksempel angitt her: Hva betyr `return`-nøkkelordet inne i `forEach`-funksjonen? eller her: https://codeburst.io/javascript-map-vs-foreach-f38111822c0f
I stedet er det bedre å kvitte seg med den første if() helt. Skål
Svar #2
tsconfig.json
compilerOptions:{
"noImplicitReturns": false
}
Svar #3
Du kan løse denne feilen på to måter.
Ved å redigere
noImplicitReturns-attributtet til false itsconfig.json"noImplicitReturns": false
- Ved å legge til en return-setning for hver vei i metoden din. Hvis du har 10 if-betingelser, må du legge til 10 return-setninger. Det virker rart, men TypeScript anbefaler return for hver vei.
Her kan vi unngå antall stier ved bruk av lambda-uttrykk.
private ValidateRequestArgs(str) {
return str.split(",").every(el => List.includes(el));
}
