TypeScript Error: Not all code paths return a value.
TypeScript 함수의 모든 실행 경로에서 반환값을 처리하는 방법과 noImplicitReturns 옵션.

타입스크립트로 개발하는 중에 자주 마주칠만 한 에러는 아니지만, 간혹 마주칠 수 있는 에러로 ‘Not all code paths return a value.’ 라는 에러를 마주할 수 있다.
이 에러는 조건문으로 생겨난 모든 분기에 대해서 return 처리를 하지 않았다는 뜻이다.
function foo(arg: number) {
if (arg > 10) {
return true;
}
}위의 경우를 보면, 반환형에 대해서 타입스크립트의 암묵적 타입 추론을 허용하고 있고, 함수 내부의 if 조건문에 대해서 boolean 타입의 값을 반환하고 있지만, 그렇지 않은 경우에 대해서는 처리하지 않았다. 이런 경우에 해당 에러가 발생한다.
그렇다면 어떻게 해결할 수 있을까?
// solution 1
function foo(arg: number): boolean | void {
if (arg > 10) {
return true;
}
}
// solution 2
function foo(arg: number) {
if (arg > 10) {
return true;
}
return;
}첫 번째로는 함수의 반환 타입을 기술해주어 타입스크립트에게 조건문 내부에서의 반환 타입과, 그렇지 않은 경우 void로 아무것도 반환하지 않을 것임을 알려줘서 에러를 해결할 수 있다.
두 번째는 조건문의 조건이 해당하지 않는 경우에 대한 반환문을 작성해서 타입스크립트가 추론할 수 있게끔 도와주어 해결하는 방법이 있다.
// tsconfig.json
{
"compilerOptions": {
"noImplicitReturns": false,
}
}혹은 타입스크립트의 컴파일러 옵션에서 암묵적 반환을 방지하는 옵션에서 false로 설정해줘서 해당 에러를 무시할 수 있다.
Fix - Not all code paths return a value in TypeScript | bobbyhadz
원문: Medium