TypeScript 리터럴 타입

dev.horang🐯·2023년 3월 8일
0
//리터럴 타입이란 : 집합타입의 보다 구체적인 하위타입 ex) "hello" 는 스트링이지만 스트링이라고해서 "hello"는 아님
//TypeScript에는 문자열과 숫자, 두 가지 리터럴 타입이 있는데 이를 사용하면 문자열이나 숫자에 정확한 값을 지정할 수 있습니다.

//리터럴 타입 좁히기
//var, let의 경우 변수값이 변경될 가능성이 있음을 알림
//const로 변수 선언시 이 객체는 절대 변경되지 않음을 알림

// 따라서, TypeScript는 문자열이 아닌 "Hello World"로 타입을 정합니다.
const helloWorld = "Hello World";

// 반면, let은 변경될 수 있으므로 컴파일러는 문자열이라고 선언할 것입니다.
let hiWorld = "Hi World";

//문자열 리터럴 타입
// props 지정할때 정해진 값 이외의 값이 들어오면오류뱉는 경우
// @errors: 2345
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");

//숫자형 리터럴 타입 : 주로 설정값을 설명할 때 사용
/** loc/lat 좌표에 지도를 생성합니다. */
declare function setupMap(config: MapConfig): void;
// ---생략---
interface MapConfig {
  lng: number;
  lat: number;
  tileSize: 8 | 16 | 32;
}

setupMap({ lng: -73.935242, lat: 40.73061, tileSize: 16 });
profile
좋아하는걸 배우는건 신나🎵

0개의 댓글