[TypeScript] 필요한 이유

2022. 4. 7. 14:00·TypeScript/기초
반응형

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
'TypeScript/기초' 카테고리의 다른 글
  • [TypeScript] 기본 타입 정리
  • [TypeScript] 컴파일 시 세부 설정
  • [TypeScript] React에서 TypeScript 사용하기
  • [TypeScript] 타입 선언
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    영어회화
    프로그래머스
    리얼학습일기
    webpack
    ReactNative
    자바스크립트
    ChatGPT
    Docker
    react
    next.js
    바질 키우기
    타일러영어
    리얼클래스
    다이소
    redux
    네트워크
    식물
    타입스크립트
    바질
    Node.js
    네이버 부스트캠프
    리액트
    javascript
    영어독학
    CCNA
    typescript
    CSS
    알고리즘
    Babel
    덤프
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[TypeScript] 필요한 이유
상단으로

티스토리툴바