function add(var1, var2){
return var1 + var2;
}
console.log(add(1,2));
console.log(add(1,'2')); // 1이 string값으로 변경되고 '1' + '2' ='12'인 스트링 타입이 된다.
console.log(add('1', '2'));
// typeof runtime에 체크를 할 수 있다.
function addTypeSafe(num1, num2){
if(typeof num1 === 'number' && typeof num2 ==='number'){
return num1 + num2;
}else{
throw Error('숫자만 파라미터에 입력해주세요');
}
}
console.log(addTypeSafe(1,2));
console.log(addTypeSafe(1,'2'));
js는 다른 언어들과 다르게 타입을 선언하지 않는다. 이로 인해 발생하는 문제점이 많고 유지보수 측면에서도 어려움을 겪는다.
예를 들어
console.log(1+2) => 3
console.log(1 + '2') => 12
console.log('1' + '2') => 12이다.
이렇게 원하지 않는 결과가 나올 수 가 있다.
그래서 Type을 체크하고 계산하는 것도 하나의 방법이 될 순 있다. 하지만 Type을 체크하는 함수를 일일히 만들어야 하고 파라미터자체에서 에러를 인지하지 못한다.
타입스크립트로 해결하자
function add(num1: number, num2: number){
return num1 + num2;
}
console.log(add(1,2));
console.log(add(1,'2'));
타입스크립트는 파라미터에 타입을 선언할 수 있다. 만약 add(1, '2')를 호출하면 '2' 에 빨간색 언더라인이 표시되고 실행하면 에러가 출력된다.