• TypeScript란

    Untitled

    • 안전하고 예측 가능한 코드 구현에 초점을 맞춘 JavaScript 상위 집합 언어

    • 가장 큰 특징은 JavaScript에 Type System을 적용한 것

    • TypeScript 코드는 TypeScript 컴파일러(tsc)를 통해 JavaScript로 변환되고 실행

    • TypeSystem이외에도 TypeScript는 Decorators와 같은 다양한 기능 제공

    • 예시 코드

      // JavaScript
      function add(n1, n2) {
      	return n1 + n2;
      }
      console.log(add('1', '2'));
      // return 12(아스키 코드 연산)
      
      // TypeScript
      function add(n1: number, n2: number): number {
      	return n1 + n2;
      }
      console.log(add('1', '2'));
      // compile error 발생(Number타입 파라미터로 String 타입 전달)
      
  • TypeScript 특징

    • 가장 큰 특징은 JavaScript의 타입 체계에 **정적 타입(static typed)**를 적용

    • JavaScript는 동적 타입 체계(dynamic typed) 언어로 변수에 타입을 지정하지 않음

    • 동적 타입 체계가 갖는 장점도 있지만 변수를 사용할 때 문제가 발생할 수 있음

    • JavaScript 타입 종류

      Untitled

  • TypeScript의 사용

    • 변수의 정의와 함께 대입할 값의 타입을 함께 지정

    • 만일 다른 타입의 변수를 대입하는 경우 컴파일 에러 발생

    • 변수와 마찬가지로 함수의 매개변수, 반환 값의 정의에도 동일한 방식으로 적용 가능

    • 예시 코드

      // Type Annotation 사용
      let year: number = 2023;
      
      // Parameter Annotation, Result Type Annotation
      function sum(n1: number, n2: number): number {
      	return n1 + n2;
      }
      
  • Type Inference(타입 추론)

    • 정적으로 타입을 명시하지 않고 대입하는 값을 통해 타입을 유추해 결정하는 것

    • 기본적으로 변수의 선언과 함께 값을 대입하는 경우 해당 변수는 대입되는 값의 타입만 가질 수 있음

    • 변수를 선언하고 다른 코드 라인에서 초기화를 하는 경우 해당 변수는 any 타입의 변수가 됨

    • 예시 코드

      // 같은 라인에서 초기화하는 경우
      let name = 'Kim'; // String type
      let age = 20; // number type
      
      // 다른 라인에서 초기화하는 경우
      let name;
      name = 'Kim;
      let age;
      age = 20;
      // name, age 변수는 모두 any타입으로 추론됨