2) 타입주석과 타입추론

TypeScript에서 제공하는 기본 타입들에 대해 기술할 페이지

1. TypeScript 의 자료형

TypeScript에서는 변수를 관리하기 위한 다양한 자료형들을 지원합니다.

또한 타입스크립트는 자바스크립트의 상위 집합이기 때문에, 자바스크립트에서 사용 가능한 모든 값과 타입도 기본적으로 지원합니다. 아래 계층 구조도를 통해 타입스크립트가 어떤 자료형들을 지원하는지 살펴보겠습니다.

TypeScript의 계층구조도

1. unknownany

  • unknown: 타입 체계에서 가장 상위에 있는 타입 으로 모든 타입의 최상위 부모 타입.

    • 안전성이 가장 높은 타입이며, 아무 값이나 할당 받을 수 있지만 사용하려면 narrowing이 필요

  • any: unknown보다는 하위 개념.

    • 타입 검사 우회를 허용하는 타입. 타입 안전성을 포기하는 타입으로 any를 사용하면 컴파일러의 타입 검사를 회피하게 된다.

    • 즉, any타입을 남용하는 것은 TypeScript의 사용 이유를 포기하는 것.

2. voidundefined

  • void: 함수의 반환값이 없음을 의미하는 타입 .

  • undefined: 명시적으로 정의되지 않은 값. void의 하위 개념으로, 다형성에 의해 반환형 void에는 undefined를 반환시킬 수 있다.

3. 주요 기본 타입 분류

  • number, string, boolean, bigint, symbol 등은 js에 이미 존재하는 원시 타입(primitive types) 으로 TS에서 그대로 사용할 수 있다.

  • 각 원시타입은 특정 enum과 연결하여 사용 가능.

    • number enum, string enum, unique symbol

4. object 타입 계열

  • object: 참조형 타입의 최상위 개념

    • array, function, constructorobject의 하위 타입

    • tuplearray의 특수한 형태로, 배열이지만 길이와 각 요소의 타입이 고정된 타입

5. never

  • never: 어떤 값도 가지지 않는 타입 (예: 항상 에러를 throw하거나 무한 루프)

  • 모든 타입의 하위 타입

    • 즉, 모든 타입에 할당 가능하지만, 어떤 값도 할당할 수 없음


2. 타입주석

JS에서 변수의 자료형은 값이 대입되는 순간(Dynamic Typing) 결정되었습니다.

타입스크립트에서는 변수명 옆에 콜론(:)을 사용하여 변수의 타입을 명시할 수 있습니다. 이를 '타입 주석(type annotation)'이라고 합니다.

타입스크립트는 타입 주석을 기반으로 변수에 할당되는 값이 해당 타입과 일치하는지 검사하며, 타입이 맞지 않으면 컴파일 단계에서 오류를 발생시킵니다.


3. 타입 추론(Type Inference)

타입스크립트는 타입 주석이 없더라도 변수에 대입된 초기값을 보고 타입을 자동으로 추론(infer)합니다. 이를 '타입 추론(Type Inference)'이라고 하며, 일반적으로 간단한 변수 하나하나에 타입주석을 작성하는 행위는 생산성을 떨어뜨리므로 반드시 필요한 위치에만 추가하는 것이 좋습니다.

  • 함수의 인자/반환 타입, 공용 API와 같이 명확한 제약이 필요한 위치에는 타입을 명시해줘야 합니다.

Last updated