Typescript Docs - Literal Types

Bard·2020년 11월 16일
1

Typescript Docs

목록 보기
4/4
post-thumbnail

Literal Types

TypeScript에는 문자열과 숫자, boolean 세 가지 리터럴 타입이 있는데 이를 사용하면 문자열이나 숫자에 정확한 값을 지정할 수 있습니다.

Literal Narrowing

const로 변수를 선언하게 되면 TypeScript에게 이 객체는 절대 변경되지 않음을 알립니다.

const helloWorld = "Hello World";

let hiWorld = "Hi World";

위 예시에서 helloWorld는 문자열이 아닌 "Hello World"로 타입을 정하지만 hiWorld는 변경될 수 있으므로 문자열로 선언합니다.

이렇게 잠재적 케이스의 수를 줄이는 것을 Narrowing 이라고 부릅니다.

String Literal Types

문자열 리터럴 타입은 Union types, type guards, type aliases과 잘 결합됩니다. 이런 기능을 통해 문자열을 enum처럼 사용할 수 있습니다.

type Easing = "ease-in" | "ease-out" | "ease-in-out";

class UIElement {
  animate(dx: number, dy: number, easing: Easing) {
    if (easing === "ease-in") {
      // ...
    } else if (easing === "ease-out") {
    } else if (easing === "ease-in-out") {
    } else {
      // 하지만 누군가가 타입을 무시하게 된다면
      // 이곳에 도달하게 될 수 있습니다.
    }
  }
}

let button = new UIElement();
button.animate(0, 0, "ease-in");
button.animate(0, 0, "uneasy");

Numeric Literal Types

Typescript에는 숫자형 리터럴 타입도 있습니다.

function rollDice(): 1 | 2 | 3 | 4 | 5 | 6 {
  return (Math.floor(Math.random() * 6) + 1) as 1 | 2 | 3 | 4 | 5 | 6;
}

Boolean Literal Types

interface ValidationSuccess {
  isValid: true;
  reason: null;
};

interface ValidationFailure {
  isValid: false;
  reason: string;
};

type ValidationResult =
  | ValidationSuccess
  | ValidationFailure;
profile
The Wandering Caretaker

0개의 댓글