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

Что такое сужение типов
Что такое сужение типов?
Сужение типов — это процесс уточнения более общего типа (например, 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 для безопасного и эффективного уточнения и обработки сложных типов. Практикуйтесь в применении этих методов, чтобы сделать свой код более надёжным и безопасным с точки зрения типов!

Часто задаваемые вопросы
Урок «Продвинутое сужение типов» бесплатный?
Да — полный текст урока «Продвинутое сужение типов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.
Все уроки этого курса
- Продвинутое сужение типов
- Расширенные возможности классов
- Условные типы