Menu
Coddy logo textTech

리터럴 타입

Coddy JavaScript 여정의 TypeScript 소개 섹션에 포함된 레슨 — 73개 중 33번째.

리터럴 타입(Literal types)은 변수를 광범위한 범주가 아닌 정확하고 구체적인 값으로 제한할 수 있게 해줍니다. 임의의 문자열을 허용하는 대신, 오직 "left", "right", "up", 또는 "down"으로만 제한할 수 있습니다.

리터럴 타입은 정확한 값을 타입 그 자체로 사용합니다.

문자열, 숫자 또는 불리언에 대한 리터럴 타입을 생성할 수 있습니다:

let direction: "left" = "left";  // "left"만 허용됩니다
let count: 42 = 42;              // 숫자 42만 허용됩니다
let isReady: true = true;        // true만 허용됩니다

리터럴 타입은 유니온 타입과 결합할 때 강력해지며, 허용된 값의 제어된 집합을 생성합니다. 이는 방향, 상태 코드 또는 설정 옵션과 같은 시나리오에 적합합니다:

type Direction = "left" | "right" | "up" | "down";
type Status = "pending" | "approved" | "rejected";

let playerMove: Direction = "up";    // 유효
let orderStatus: Status = "pending"; // 유효
// let invalid: Direction = "diagonal"; // 에러!

이 접근 방식은 엄격한 타입 안전성을 유지하면서도 여러 옵션의 유연성을 제공합니다. TypeScript는 컴파일 타임에 오타와 유효하지 않은 값을 잡아내어, 일반적인 문자열 타입을 사용하는 것보다 코드를 더 신뢰할 수 있게 만들어 줍니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

challenge icon

챌린지

쉬움

리터럴 타입 "left" | "right" | "up" | "down"을 위한 Direction이라는 이름의 타입 별칭을 생성하세요.

리터럴 타입 "menu" | "playing" | "paused" | "gameover"를 위한 GameState라는 이름의 타입 별칭을 생성하세요.

리터럴 타입 "easy" | "medium" | "hard"를 위한 Difficulty라는 이름의 타입 별칭을 생성하세요.

이제 타입 별칭을 사용하여 다음 변수들을 선언하세요:

  • Direction 타입의 playerDirection이라는 변수를 선언하고 "up" 값을 할당하세요.
  • GameState 타입의 currentState라는 변수를 선언하고 "playing" 값을 할당하세요.
  • Difficulty 타입의 selectedDifficulty라는 변수를 선언하고 "medium" 값을 할당하세요.

Direction 타입의 direction이라는 매개변수를 받고 string을 반환하는 movePlayer라는 함수를 생성하세요. 이 함수는 "Moving [direction]" 형식의 메시지를 반환해야 합니다.

GameState 타입의 state라는 매개변수를 받고 string을 반환하는 updateGameState라는 함수를 생성하세요. 이 함수는 "Game state: [state]" 형식의 메시지를 반환해야 합니다.

생성한 변수들을 사용하여 함수를 호출하고 결과를 출력하세요:

  • playerDirection을 인자로 movePlayer를 호출하고 그 결과를 출력하세요.
  • currentState를 인자로 updateGameState를 호출하고 그 결과를 출력하세요.
  • selectedDifficulty의 값을 출력하세요.

각 결과를 위에 명시된 순서대로 별도의 줄에 출력하세요.

치트 시트

리터럴 타입은 변수를 광범위한 범주가 아닌 정확하고 구체적인 값으로 제한합니다:

let direction: "left" = "left";  // "left"만 허용됩니다
let count: 42 = 42;              // 숫자 42만 허용됩니다
let isReady: true = true;        // true만 허용됩니다

리터럴 타입을 유니온 타입과 결합하여 허용된 값의 제어된 집합을 생성할 수 있습니다:

type Direction = "left" | "right" | "up" | "down";
type Status = "pending" | "approved" | "rejected";

let playerMove: Direction = "up";    // 유효함
let orderStatus: Status = "pending"; // 유효함

이는 여러 옵션에 대한 유연성을 유지하면서 컴파일 타임에 오타와 유효하지 않은 값을 포착하여 타입 안정성을 제공합니다.

직접 해보기

// TODO: 여기에 코드를 작성하세요
// Direction, GameState, Difficulty에 대한 타입 별칭을 생성합니다
// 타입 별칭을 사용하여 변수를 선언합니다
// movePlayer 및 updateGameState 함수를 생성합니다
// 함수를 호출하고 결과를 출력합니다
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

TypeScript 소개의 모든 레슨