0Pricing
TypeScript Academy · Урок

Продвинутое сужение типов

Научитесь использовать продвинутые проверки типов и анализ потока управления для удобной работы со сложными типами

«Продвинутое сужение типов» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 3 уроков всего.

Введение в расширенное сужение типов

Введение в расширенное сужение типов

Расширенное сужение типов позволяет уточнять сложные типы во время выполнения с помощью таких методов, как защитники типов, анализ потока управления и пользовательские предикаты.

Эти средства делают код на TypeScript более безопасным и предсказуемым.

Продвинутое сужение типов — иллюстрация 1

Что такое сужение типов

Что такое сужение типов?

Сужение типов — это процесс уточнения более общего типа (например, string | number) до более конкретного типа с помощью проверок во время выполнения.

Использование typeof для сужения типов

Использование typeof для сужения типов

Оператор typeof можно использовать для сужения примитивных типов:

function printValue(value: string | number): void {
  if (typeof value === 'string') {
    console.log(`String: ${value}`);
  } else {
    console.log(`Number: ${value}`);
  }
}

printValue('Hello'); // String: Hello
printValue(42); // Number: 42

Использование instanceof для сужения типов

Использование instanceof для сужения типов

Оператор instanceof можно использовать для сужения типов экземпляров классов:

class Dog {
  bark() {
    console.log('Woof!');
  }
}

class Cat {
  meow() {
    console.log('Meow!');
  }
}

function makeSound(animal: Dog | Cat): void {
  if (animal instanceof Dog) {
    animal.bark();
  } else {
    animal.meow();
  }
}

makeSound(new Dog()); // Woof!
makeSound(new Cat()); // Meow!

Использование пользовательских защитников типов

Использование пользовательских защитников типов

Вы можете создавать пользовательские функции-защитники типов, чтобы точнее сужать типы:

type Fish = { swim: () => void };
type Bird = { fly: () => void };

declare const animal: Fish | Bird;

function isFish(animal: Fish | Bird): animal is Fish {
  return (animal as Fish).swim !== undefined;
}

if (isFish(animal)) {
  animal.swim();
} else {
  animal.fly();

Анализ потока управления

Анализ потока управления

TypeScript автоматически сужает типы на основе логического потока вашего кода:

function getLength(value: string | string[]): number {
  if (Array.isArray(value)) {
    return value.length;
  } else {
    return value.length;
  }
}

console.log(getLength('Hello')); // 5
console.log(getLength(['a', 'b', 'c'])); // 3

Преимущества расширенного сужения типов

Преимущества расширенного сужения типов

Расширенное сужение типов улучшает код следующим образом:

  • Уменьшает количество ошибок во время выполнения.
  • Делает код безопаснее и понятнее.
  • Обеспечивает точный контроль над обработкой типов.

Практическое задание

Практическое задание

Создайте функцию, принимающую параметр типа string | number и записывающую в журнал разные сообщения для каждого типа. Используйте typeof для реализации этой логики.

Поздравляем

Поздравляем!

Вы научились использовать методы расширенного сужения типов в TypeScript для безопасного и эффективного уточнения и обработки сложных типов. Практикуйтесь в применении этих методов, чтобы сделать свой код более надёжным и безопасным с точки зрения типов!

Продвинутое сужение типов — иллюстрация 10

Часто задаваемые вопросы

Урок «Продвинутое сужение типов» бесплатный?

Да — полный текст урока «Продвинутое сужение типов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 3 уроков всего.

Чему я научусь в уроке «Продвинутое сужение типов»?

Научитесь использовать продвинутые проверки типов и анализ потока управления для удобной работы со сложными типами Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.

Сколько времени занимает урок «Продвинутое сужение типов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Продвинутое сужение типов
  2. Расширенные возможности классов
  3. Условные типы
← Назад к TypeScript Academy