리터럴 타입
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는 컴파일 타임에 오타와 유효하지 않은 값을 잡아내어, 일반적인 문자열 타입을 사용하는 것보다 코드를 더 신뢰할 수 있게 만들어 줍니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
챌린지
쉬움리터럴 타입 "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 함수를 생성합니다
// 함수를 호출하고 결과를 출력합니다이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.