반응형
JavaScript를 사용하면서 우리는 많은 함수를 만들 것이다.
function add (num1, num2) {
console.log(num1 + num2);
}
add(); - NaN
add(1); - NaN
add(1,2); - 3
add(3,4,5); - 7
add("hello","world"); - "helloworld"
add()만 호출할 경우 undefined + undefined 가 되기 때문에 NaN이 출력되며,
add(1) 경우엔 1 + undefined 이기 때문에 NaN, add(3,4,5)와 add("hello", "world")는 만든 용도와 다르게
사용되고 있다.
즉, add(1,2) 외엔 모두 원하던 결과 혹은 잘못된 사용방법으로 사용되고 있다.
하지만 JavaScript는 아무런 경고도 주지 않고 문제없이 실행된다.
function showItems(arr) {
arr.forEach((item) => {
console.log(item);
});
}
showItems([1,2,3]);
showItems(1,2,3);
showItems 함수는 배열을 입력받아 배열의 값을 보여주는 함수이다.
당연히 배열을 넘겨줬을 때는 1, 2, 3 순서대로 잘 나오지만, 배열이 아닌 값을 보냈을 때는 오류가 발생한다.
JavaScript(동적 언어)는 실행되는 시점(런타임)에 타입이 결정되는 언어이고, 오류가 발견된다.
하지만 Java나 TypeScript(정적 언어)는 컴파일 타임에 타입이 결정되고 오류가 발견된다.
코드 작성 시간은 Java나 TypeScript가 더 길어지겠지만, 안정적으로 작업을 진행할 수 있다.
TypeScript로 다시 add 함수를 만들게 되면 기존에 의도와 다르게 사용 혹은 잘못 사용한 함수 호출이
모두 오류 표시가 나타난다.
반응형
'TypeScript > 기초' 카테고리의 다른 글
[TypeScript] 추가 타입 (5) | 2022.04.21 |
---|---|
[TypeScript] 기본 타입 정리 (0) | 2022.04.16 |
[TypeScript] 컴파일 시 세부 설정 (0) | 2022.04.15 |
[TypeScript] React에서 TypeScript 사용하기 (0) | 2022.04.13 |
[TypeScript] 타입 선언 (2) | 2022.04.08 |