Сужение типов с помощью instanceof и in
Сужайте типы экземпляров классов и структур объектов
«Сужение типов с помощью instanceof и in» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.
Добро пожаловать
Сужение с помощью instanceof
function handle(err: Error | string) {
if (err instanceof Error) {
console.log(err.message); // err: Error
} else {
console.log(err); // err: string
}
}instanceof с пользовательскими классами
class Dog { bark() { return 'Woof'; } }
class Cat { meow() { return 'Meow'; } }
function speak(pet: Dog | Cat) {
if (pet instanceof Dog) pet.bark();
else pet.meow();
}instanceof не работает с интерфейсами
Оператор in
type Fish = { swim(): void };
type Bird = { fly(): void };
function move(animal: Fish | Bird) {
if ('swim' in animal) animal.swim();
else animal.fly();
}Сужение с помощью in для необязательных свойств
type A = { x?: number };
type B = { y: number };
function process(v: A | B) {
if ('x' in v) {
// v: A (has optional x)
}
}Сочетание instanceof и in
function describe(v: Error | { message: string }) {
if (v instanceof Error) console.log('Error:', v.stack);
else if ('message' in v) console.log('Object:', v.message);
}Использование in для дискриминируемых объединений
type Square = { side: number };
type Circle = { radius: number };
function area(s: Square | Circle): number {
return 'side' in s ? s.side ** 2 : Math.PI * s.radius ** 2;
}instanceof в блоках catch
try {
await fetchData();
} catch (err) {
if (err instanceof NetworkError) { /* retry */ }
else if (err instanceof AuthError) { /* redirect */ }
else throw err;
}Проверка Object.prototype по сравнению с in
Приоритет сужения
Быстрая проверка
Повторение
Часто задаваемые вопросы
Урок «Сужение типов с помощью instanceof и in» бесплатный?
Да — полный текст урока «Сужение типов с помощью instanceof и in» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.
Чему я научусь в уроке «Сужение типов с помощью instanceof и in»?
Сужайте типы экземпляров классов и структур объектов Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Сужение типов с помощью instanceof и in»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Сужение типов с помощью typeof и проверки истинности
- Сужение типов с помощью instanceof и in
- Пользовательские функции проверки типов
- Проверка полноты с помощью never