Menu
Coddy logo textTech

Литеральные типы

Часть раздела Введение в TypeScript путешествия по JavaScript на Coddy — урок 33 из 73.

Литеральные типы позволяют ограничить переменную точными, конкретными значениями, а не широкими категориями. Вместо того чтобы принимать любую строку, вы можете ограничить её только "left", "right", "up" или "down".

Литеральный тип использует точное значение в качестве самого типа.

Вы можете создавать литеральные типы для строк, чисел или логических значений:

let direction: "left" = "left";  // Разрешено только "left"
let count: 42 = 42;              // Разрешено только число 42
let isReady: true = true;        // Разрешено только true

Литеральные типы становятся мощным инструментом в сочетании с типами объединения (union types), создавая контролируемый набор допустимых значений. Это идеально подходит для таких сценариев, как направления, коды состояния или параметры конфигурации:

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

Задание

Легко

Создайте псевдоним типа с именем Direction для литеральных типов "left" | "right" | "up" | "down".

Создайте псевдоним типа с именем GameState для литеральных типов "menu" | "playing" | "paused" | "gameover".

Создайте псевдоним типа с именем Difficulty для литеральных типов "easy" | "medium" | "hard".

Теперь объявите следующие переменные, используя ваши псевдонимы типов:

  • Объявите переменную с именем playerDirection типа Direction и присвойте ей значение "up"
  • Объявите переменную с именем currentState типа GameState и присвойте ей значение "playing"
  • Объявите переменную с именем selectedDifficulty типа Difficulty и присвойте ей значение "medium"

Создайте функцию с именем movePlayer, которая принимает параметр direction типа Direction и возвращает string. Функция должна возвращать сообщение в формате "Moving [direction]".

Создайте еще одну функцию с именем updateGameState, которая принимает параметр state типа GameState и возвращает string. Функция должна возвращать сообщение в формате "Game state: [state]".

Вызовите ваши функции с созданными переменными и выведите результаты:

  • Вызовите movePlayer с playerDirection и выведите результат
  • Вызовите updateGameState с currentState и выведите результат
  • Выведите значение selectedDifficulty

Выведите каждый результат на отдельной строке в указанном выше порядке.

Шпаргалка

Литеральные типы ограничивают переменные точными, конкретными значениями, а не широкими категориями:

let direction: "left" = "left";  // Разрешено только "left"
let count: 42 = 42;              // Разрешено только число 42
let isReady: true = true;        // Разрешено только true

Комбинируйте литеральные типы с типами объединения (union types), чтобы создавать контролируемые наборы допустимых значений:

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