본 게시글은 정확한 정보를 담고있지 않을 수 있으므로 다른 자료도 참고하시길 바랍니다.
만약, 본 게시글이 잘못된 정보를 가지고 있다면 피드백 부탁드립니다. 감사합니다.
function calculateTax(tax: number): number {
return 0;
}
위의 예제 함수 calculateTax
는 숫자 0
을 리턴하고 있고 f(x): number {}
형태로 작성되어 있다. 여기서 number
의 의미는 number
타입의 데이터를 리턴하겠다는 의미이며 함수를 만들 때 후에 리턴되는 데이터의 타입이 다른 것이 되는 것을 미연에 방지할 수 있다.
function calculateTax(tax: number) {
if (income <= 50_000)
return income * 1.2;
}
calculateTax
함수는 if
문을 통한 리턴문을 하나 가지고 있으며 if
문 조건이 충족되지 않을 시에는 return
값이 javascript
의 기본 리턴 값인 undefined
가 될 것이다.
만약, 프로그램이 이 상태로 실행되는 것을 방지하고 기본 리턴 값이 아니라 직접 리턴 값을 설정하고 싶다면 tsconfig.json
파일에서 noImplicitReturns
을 활성화하여 경고를 보낼 수 있다.
// tsconfig.json
"noImplicitReturns": true
위 속성을 활성화하면 Not all code paths return a value
라는 경고문을 볼 수 있다.
타입스크립트의 엄격한 타입 지정을 통해 완성된 함수의 모습은 아래와 같게 된다.
function calculateTax(tax: number): number {
if (income <= 50_000)
return income * 1.2;
return income * 1.3;
}
function calculateTax(tax: number): number {
let x;
if (income <= 50_000)
return income * 1.2;
return income * 1.3;
}
위 코드를 보면 let x;
부분이 추가되었다. 자바스크립트에서 이와 같은 변수 선언은 아무런 문제가 없다. 그러나 엄격하게 보자면 x
를 사용한적이 없는데도 x
가 선언만 되어있는 의미없는 코드가 프로그램에 들어가 있는 상황이다. 이런 경우, 나중에 본인이든 협업 개발자이든 헷갈리게 할수도 있다는 생각이 들었다.
tsconfig.json
에는 이런 선언만 있는 경우 에러를 발생시킬 수 있는 속성이 있다.
"noUnusedLocals": true
위의 속성을 활성화시키면 선언만 되어있고 사용되지 않은 변수는 에러를 발생시키게 된다.