[TypeScript] 기초 문법 : 자료형

roses16·2023년 4월 12일
0

자료형

데이터 타입을 동적으로 할당하는 JavaScript와 다르게 TypeScript는 선언 시 데이터의 타입을 지정해야한다. 지원하는 데이터 타입은 Javascript와 거의 동일하다.

  • Boolean

    let isDone: boolean = false;
  • Number
    부동 소수 값. 16진수, 10진수 리터럴에 더불어, ECMAScript 2015에 소개된 2진수, 8진수 리터럴도 지원한다.

    let decimal: number = 6;
    let hex: number = 0xf00d;
    let binary: number = 0b1010;
    let octal: number = 0o744; 
  • String
    JavaScript의 템플릿 문자열도 지원한다.

    let name: string = 'kim';
    name = "kim";
  • Array
    아래 두가지 선언 방식 모두 사용할 수 있다.

    let arr1: number[] = [1, 2, 3];
    let arr2: Array<number> = [1, 2, 3];
  • Tuple
    요소의 타입과 개수가 고정된 배열을 표현할 때 사용한다.

    let tpl: [string, number, number];
    tpl = ["kim", 1, 2]; // 성공
    tpl = [1, 2, "kim"]; // 오류
    console.log(tpl[3]); // 오류
  • Enum

    enum Stage {Start, Vote, End}
    let eStageStatus: Stage = Stage.Start;
    eStageStatus = Stage[1];	// Stage[1]의 이름인 'Vote'가 대입된다.

    각 요소는 숫자 0부터 순서대로 매치되나 아래와 같이 번호를 수동으로 매치할 수 있다.

    enum Stage {Start=1, Vote, End} // 1부터 순서대로 매치
    enum Color {Red=1, Blue=3, Green=6}
  • Any
    타입 검사를 생략하는 타입으로 타입이 명확하지 않을 때 사용한다.

    let notSure: any = 4;
    notSure = "maybe a string instead";
    notSure = false; // 성공
  • Void
    타입이 존재하지 않음을 나타낼 때 사용하며 null과 undefined만 할당할 수 있다. 일반적으로 Return이 없는 함수 선언에 사용된다.

    function func(): void {
       console.log("Hello World!");
    }
  • Null and Undefined
    JavaScript에서의 사용과 같다. 기본적으로 모든 타입에도 대입될 수 있으나 --strictNullChecks를 사용한 경우 any와 각자의 타입(null, undefined)에서만 할당이 가능하다. ※예외, undefined는 void에도 할당이 가능하다.

  • Never
    절대 발생할 수 없는 타입을 나타낸다. 모든 타입에 할당이 가능한 하위 타입이다. 함수 표현식에서 항상 오류를 발생시키거나, 절대 반환하지 않는 반환타입으로 사용된다.
    (void와 유사하나 조금 더 강제성이 있다는 의미인 것 같다.)

  • Object
    원시타입을 제외한 나머지 타입을 말한다.

    function func(obj: object): void;
    func({ prop: 0 }); // 성공
    func(42); // 오류
    func("string"); // 오류
    func(false); // 오류
    func(undefined); // 오류

유니언 타입(Discriminating Unions)

| 연산자를 사용하여 여러 데이터 타입 중 하나를 갖는 데이터 타입을 표현한다.

let nickname: string|number;

타입 단언(Type assertions)

형변환과 유사한 기능이지만 특별히 검사를 하거나 데이터를 재구성하지 않는다.

  • "angle-bracket" 문법
    let someValue: any = "this is a string";
    let strLength: number = (<string>someValue).length;
  • as-문법
    let someValue: any = "this is a string";
    let strLength: number = (someValue as string).length;
    TypeScript를 JSX와 함께 사용할 때는, as-스타일의 단언만 허용된다.

📌 출처

profile
frontend developer 📚

0개의 댓글