0Pricing
TypeScript Academy · Урок

Определение структуры объектов с помощью интерфейсов

Используйте интерфейс для описания структуры объекта

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

Добро пожаловать

Интерфейсы описывают форму объектов в TypeScript. Они определяют существующие свойства, их типы, а также то, являются ли свойства необязательными или доступными только для чтения.

Базовый интерфейс

Определите интерфейс с помощью ключевого слова `interface`, за которым следуют имена свойств и их типы.
interface User {
  id: number;
  name: string;
  email: string;
}
const alice: User = { id: 1, name: 'Alice', email: 'a@b.com' };

Необязательные свойства с помощью ?

Пометьте свойства как необязательные с помощью `?`. Необязательное свойство может присутствовать или отсутствовать.
interface Config {
  host: string;
  port?: number;     // optional
  timeout?: number;  // optional
}

Свойства только для чтения

Свойства, доступные только для чтения, можно задать один раз (при создании), но нельзя изменить позднее.
interface Point {
  readonly x: number;
  readonly y: number;
}
const p: Point = { x: 5, y: 10 };
// p.x = 0; // Error!

Сигнатуры методов

Интерфейсы могут включать сигнатуры методов, описывающие форму функции.
interface Animal {
  name: string;
  speak(): string;
  move(distance: number): void;
}

Сигнатуры индекса

Используйте сигнатуру индекса, если объект имеет динамические ключи определённого типа.
interface StringMap {
  [key: string]: string;
}
const headers: StringMap = {
  'content-type': 'application/json',
  'accept': 'text/html',
};

Структурная типизация

TypeScript использует структурную типизацию: объект соответствует интерфейсу, если содержит необходимые свойства, независимо от способа его создания.
interface Named { name: string; }
function greet(obj: Named) { console.log(obj.name); }
greet({ name: 'Alice', age: 30 }); // Extra props OK when not a literal

Проверка лишних свойств

TypeScript сообщает об ошибке, если литерал объекта содержит свойства, отсутствующие в интерфейсе. Это называется проверкой лишних свойств.
interface Config { host: string; }
// const c: Config = { host: 'localhost', extra: 1 }; // Error on literal
const obj = { host: 'localhost', extra: 1 };
const c: Config = obj; // OK — not a fresh literal

Интерфейс для типов функций

Интерфейсы могут описывать вызываемые типы с помощью сигнатуры вызова.
interface Greeter {
  (name: string): string;
}
const greet: Greeter = name => 'Hello, ' + name;

Вложенные интерфейсы

Свойства могут ссылаться на другие интерфейсы, образуя вложенные формы объектов.
interface Address { street: string; city: string; }
interface Person { name: string; address: Address; }
const p: Person = { name: 'Alice', address: { street: '1 Main', city: 'NY' } };

Интерфейс и экземпляр класса

Интерфейсы описывают публичную форму класса, но удаляются во время выполнения. Класс предоставляет реализацию.
interface Saveable { save(): Promise<void>; }
class UserService implements Saveable {
  async save() { /* ... */ }
}

Быстрая проверка

Что происходит, если присвоить литерал объекта с дополнительным свойством типу интерфейса в TypeScript?

Итоги

Интерфейсы определяют формы объектов с типизированными свойствами, модификаторами необязательности и доступа только для чтения, сигнатурами методов и сигнатурами индекса. TypeScript использует структурную типизацию: важна совместимость форм, а не объявления.

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

Урок «Определение структуры объектов с помощью интерфейсов» бесплатный?

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

Чему я научусь в уроке «Определение структуры объектов с помощью интерфейсов»?

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

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

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

Сколько времени занимает урок «Определение структуры объектов с помощью интерфейсов»?

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

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

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

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

  1. Определение структуры объектов с помощью интерфейсов
  2. Псевдонимы типов для сложных типов
  3. Расширение и объединение интерфейсов
  4. Интерфейс или тип: когда что использовать
← Назад к TypeScript Academy