JS/JavaScript&TypeScript

JavaScript&TypeScript 03. 타입 ( Type )

shin96bc 2022. 4. 2. 23:43

(1) 타입( Type )

     Github: https://github.com/SHIN96BC/JavaScript-TypeScript-Concept-2022/tree/main/03_Type

     1) javaScript
          <1> 자바스크립트는 타입을 굉장히 느슨하게 관리한다. ( 아무런 제약이 없다. )
          <2> 자바스크립트의 변수 타입은 데이터가 들어갈때마다 바뀐다.
               ex) 
                    function addAge1(age) {
                         return age + 1;
                    }

                    let age1 = addAge1(30);

                    age1 = addAge1('30');

                    age1 = 10;
                    age1 = [];
                    age1 = false;
                    age1 = {};

          <3> 자바스크립트의 이런 느슨함은 한편으로는 편리하지만, 한편으로는 

                 큰 불안정성이라고도 할 수 있다.
          <4> 위의 예시처럼 1 을 더해서 반환하는 함수를 작성했는데 인자값으로 문자열을 주게되면

                 작성자가 원하는 결과와는 다른 결과가 나오게되면서 이 함수의 목적이 모두 허물어지게 된다.
          <5> 즉, 버그를 굉장히 쉽게 만들 수 있는 언어 환경이라고도 할 수 있다.
          <6> 그래서 자바스크립트 개발자들은 이런 버그를 없애고 안전하게 동작하는 코드를 만들기 위해서 

                 방어코드를 끊임없이 작성해야 된다.
          <7> 자바스크립트는 런타임에서 에러가 발생하기 때문에 에러처리가 굉장히 힘들다.

     2) typeScript
          <1> 타입스크립트는 타입을 굉장히 엄격하게 관리한다.
          <2> 타입스크립트는 변수 선언시에 미리 타입을 명시한다.
               ex) 
                    function addAge2(age: number): number {
                         return age + 1;
                    }

                    let age2: number = addAge1(30);
                    // let age2: number = addAge1('30'); // 컴파일 에러 발생
                    // age2 = '30'; // 컴파일 에러 발생

          <3> 타입 관리가 엄격해서 불편할 수 있지만, 굉장히 안정적인 코드를 작성할 수 있게된다.
          <4> 타입스크립트는 컴파일타임에 개발자가 실수로 지정해둔 타입과 다른타입의 데이터를 넣게되면 

                 컴파일 에러를 발생시켜서 알려주기 때문에 버그를 미리 방지할 수 있다.