Структурная типизация и проверки лишних свойств
Разберитесь со структурной типизацией в TypeScript и узнайте, как проверки лишних свойств предотвращают непреднамеренные структуры объектов.
«Структурная типизация и проверки лишних свойств» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 3 уроков всего.
Введение
Цель: изучить структурную типизацию, при которой совместимость зависит от наличия нужных элементов, а также понять, как работают проверки избыточных свойств с литералами объектов.
Структурная типизация
Структурная типизация: совместимость определяется структурой. Если объект содержит как минимум все обязательные свойства, он принимается, даже если в нём есть дополнительные свойства.
interface Point { x: number; y: number; }
function logPoint(p: Point) {
console.log(p.x, p.y);
}
const a = { x: 5, y: 7, z: 99 };
logPoint(a); // OK because it has x and yИменованная и структурная типизация
В отличие от номинативных систем, Point2D и Коорд совместимы, потому что имеют одинаковую структуру.
type Point2D = { x: number; y: number };
type Coord = { x: number; y: number };
const p: Point2D = { x: 1, y: 2 };
const q: Coord = p; // OK, same structureОшибка проверки избыточных свойств
Проверки избыточных свойств применяются к литералам объектов, присваиваемым напрямую. Дополнительные свойства, отсутствующие в целевом типе, вызывают ошибки.
interface User { id: number; name: string }
const u: User = { id: 1, name: "Ada", age: 30 }; // Error: excess property "age"Обход проверки
Присваивание через переменную обходит проверки избыточных свойств. Это обеспечивает гибкость, но следует остерегаться непреднамеренных свойств.
const raw = { id: 1, name: "Ada", age: 30 };
const u: User = raw; // OK, because variable assignment skips excess checkРекомендации
Рекомендации:
- Структурная типизация делает TS гибким.
- Проверки избыточности помогают рано обнаруживать ошибки.
- Используйте переменные, если дополнительные поля добавлены намеренно.
Проверка структурной типизации
Быстрая проверка: какое утверждение о структурной типизации верно?
Итоги
Итоги: TypeScript использует структурную типизацию: типы сопоставляются по элементам. Проверки избыточных свойств защищают литералы объектов. Помните, как осторожно обходить эти проверки.
Часто задаваемые вопросы
Урок «Структурная типизация и проверки лишних свойств» бесплатный?
Да — полный текст урока «Структурная типизация и проверки лишних свойств» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Структурная типизация и проверки лишних свойств»?
Разберитесь со структурной типизацией в TypeScript и узнайте, как проверки лишних свойств предотвращают непреднамеренные структуры объектов. Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.
Сколько времени занимает урок «Структурная типизация и проверки лишних свойств»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Типы объектов, необязательные и readonly-свойства, индексные сигнатуры
- Интерфейсы и псевдонимы типов
- Структурная типизация и проверки лишних свойств