TypeScript Guidebook
  • TypeScript 가이드북
  • 소개
    • TypeScript를 사용하는 이유
  • 환경 구성 / CLI
    • 컴파일 설정
    • 린팅
    • IDE / 에디터
    • Google TypeScript Style
    • TSDX
  • 타입
    • primitive 타입
    • any 타입
    • array 타입
    • tuple 타입
    • enum 타입
    • function / union / void 타입
    • object 타입
    • null / undefined 타입
    • never 타입
    • 사용자 정의 타입
    • 타입 어설션
  • TS vs ES6
    • 블록 영역 변수, 상수 선언
    • 템플릿 리터럴
    • 화살표 함수
    • 전개 연산자 / 매개변수
    • 비구조화 할당
  • 클래스
    • 속성 with 접근 제어자
    • 메서드 with 접근 제어자
    • 상속
    • 게터 / 세터
    • 스태틱 속성, 메서드
    • 추상 클래스
    • 싱글턴
    • 읽기전용 속성
  • 네임스페이스와 모듈
    • 네임스페이스
    • 네임스페이스 멀티 파일
    • 네임스페이스 중첩
    • 모듈
    • 모듈 번들링
  • 인터페이스
    • 인터페이스와 클래스
    • 인터페이스와 매개변수
    • 인터페이스와 객체 리터럴
    • 인터페이스 옵션 속성
    • 인터페이스 읽기 전용 속성
    • 인덱스 시그니처 속성
    • 인터페이스와 함수타입
    • 인터페이스 확장
  • 제네릭
    • 제네릭과 클래스
    • 제네릭과 함수
    • 멀티 타입 설정
    • 타입 변수 상속
  • 데코레이터
    • 데코레이터 / 팩토리
    • 데코레이터 구성
    • 클래스 데코레이터
    • 메서드 데코레이터
    • 접근 제어자 데코레이터
    • 속성 데코레이터
    • 매개변수 데코레이터
Powered by GitBook
On this page
  • 타입이란?
  • 명시적 타입 설정
  • 타입 설정을 하는 이유?

타입

PreviousTSDXNextprimitive 타입

Last updated 6 years ago

타입이란?

TypeScript 파일(*.ts)에 코드를 다음과 같이 작성하고 컴파일 하면 오류를 출력합니다.

let milk_chocolate = '밀크 초콜릿';
milk_chocolate = 2018;

/*
  오류 출력:
    [ts] '2018' 형식은 'string' 형식에 할당할 수 없습니다.
    let milk_chocolate: string
*/

발생한 오류를 살펴보면 초기 할당된 값의 타입이 문자(string) 값인데 반해 나중에 재 할당된 값의 타입이 숫자(number) 값인 것에 대한 오류라고 안내하고 있습니다. TypeScript는 JavaScript와 달리 엄격하게 타입을 관리하는 언어이기 때문에 이와 같은 오류를 출력한 것입니다.

반면 변수 선언만 있고, 동시에 값을 할당하는 구문이 없을 경우, TypeScript는 타입이 다른 값을 할당 해도 오류를 출력하지 않습니다. 이유는 선언된 coffee_type 변수를 타입으로 처리하기 때문입니다.

let coffee_type; // `any` 타입

coffee_type = '콜드브루';
coffee_type = 9112304129312;

명시적 타입 설정

  • null

  • undefined

  • number

  • string

  • boolean

  • array

  • function

  • object

  • Symbol

any 타입을 사용한다면 굳이 TypeScript를 쓸 이유가 없습니다. JavaScript는 기본이 any 타입을 사용하기 때문입니다. 그러므로 TypeScript를 사용한다면 다음과 같이 타입을 명시적으로 설정하는 것을 권장합니다. 타입을 지정하면 잘못된 타입이 할당 되었을 때 오류를 사용자에게 알려주므로 매우 유용합니다.

let coffee_type:string;

coffee_type = '콜드브루';

coffee_type = 9112304129312;
/*
  [ts] '9120304123' 형식은 'string' 형식에 할당할 수 없습니다.
  let coffee_type: string
*/

타입 설정을 하는 이유?

"도로 차선" 예시를 들어봅시다. 각 차로에 제한을 두지 않고 자유롭게 차로를 이용할 수 있다면 편할 겁니다. 하지만 자유로운 만큼 사고가 발생할 확률 또한 커집니다. 하지만 각 차로에 접근 가능한 차량에 제한을 둠에 따라, 다소 제약이 따르긴 하지만 사고를 미연에 방지할 수 있습니다.

마찬가지로 프로그래밍 작성 시, 타입 지정이 없다면 편하게 코드를 짤 수 있지만 작성한 코드에 문제가 발생할 확률이 높습니다. 반면 타입을 지정하게 되면 잘못된 것을 사전에 확인할 수 있어 미연에 사고를 방지할 수 있어 유용합니다.

TypeScript는 변수를 선언할 때 타입을 명시적(Explicit)으로 할당 할 수 있습니다. TypeScript는 JavaScript를 포함하는 수퍼셋(Superset)이므로 JavaScript가 지원하는 데이터 타입을 모두 사용 가능합니다. 뿐만 아니라 , 등을 타입으로 설정할 수도 있습니다.

any
클래스
인터페이스