Объявление интерфейса

Тренажер по TypeScript для пользователей с начальным уровнем подготовки.

Тренажер по TypeScript

Интерфейсы в TypeScript — это способ описать структуру объекта: какие свойства и методы он должен содержать.

Синтаксис объявления:

interface User {
name: string;
age: number;
}

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

  • Свойства описывают данные объекта
  • Необязательные свойства помечаются знаком ?
  • Readonly свойства нельзя изменить после создания

Интерфейсы — основа объектно-ориентированного программирования в TypeScript. Они обеспечивают строгую типизацию и помогают избежать ошибок при работе с объектами.

Выполни практические задания, чтобы освоить объявление интерфейсов с нуля.

Список тем

1. Простое объявление интерфейса

id: 40677_iface_01_basic

В этом задании вам нужно объявить интерфейс на TypeScript. Интерфейс должен описывать объект пользователя с двумя свойствами: name (строка) и age (число). В приведённом фрагменте кода пропущено ключевое слово для объявления интерфейса и тип одного из свойств. Заполните пропуски так, чтобы интерфейс User был объявлен корректно и соответствовал описанию.

Заполните пропуски
input1S User {
  name: string;
  age: input2S;
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Выбери типы свойств

id: 40677_iface_02_select

В этом задании вам предстоит определить типы свойств интерфейса TypeScript. Ниже представлен интерфейс Book с пятью свойствами, но для четырёх из них тип не указан. Используя выпадающие списки, выберите для каждого свойства подходящий тип данных из предложенных вариантов. Обратите внимание на уже указанный тип для свойства published и на смысл каждого свойства (например, название — строка, год — число).

Нужно правильно расставить в пропуски предложенные варианты
interface Book {
  title: input1S;
  year: input2S;
  available: input3S;
  tags: input4S;
  published: Date;
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Найди синтаксическую ошибку

id: 40677_iface_03_error

В этом фрагменте TypeScript-кода объявлен интерфейс, но допущена одна синтаксическая ошибка, из-за которой код не будет компилироваться. Найдите строку с ошибкой и исправьте её, чтобы интерфейс был объявлен корректно. Обратите внимание на правильный синтаксис объявления свойств интерфейса.

Найдите ошибку и исправьте
interface User {
  name string
  age: number;
  email: string;
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Собери интерфейс из частей

id: 40677_iface_04_build

Из предложенных строк соберите корректный интерфейс TypeScript с именем User, который описывает объект пользователя с полями id (число), name (строка), age (число) и email (строка). Одна из строк содержит неверный тип для поля name и должна быть исключена из решения. Порядок свойств в интерфейсе должен быть следующим: id, name, age, email.

Перетяните в правильном порядке строки из одного блока в другой
interface User {
    id: number;
    name: string;
    age: number;
    email: string;
}
    name: number;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Интерфейсы и объекты

id: 40677_iface_05_compare

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

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
interface Point {
  x: number;
  y: number;
}
interface User {
  id: number;
  name: string;
  email?: string;
}
interface Animal {
  species: string;
  age: number;
  makeSound(): void;
}
interface Config {
  readonly apiUrl: string;
  timeout: number;
  retry: boolean;
}
interface Product {
  id: string;
  price: number;
  inStock: boolean;
  discount?: number;
}
{
  x: 10,
  y: 20
}
{
  species: "Cat",
  age: 3,
  makeSound: () => console.log("Meow")
}
{
  id: "p123",
  price: 99.99,
  inStock: true,
  discount: 15
}
{
  id: 1,
  name: "Alice",
  email: "alice@example.com"
}
{
  apiUrl: "https://api.example.com",
  timeout: 5000,
  retry: true
}
Сообщения
Проверить
Показать подсказку

6. Отметь обязательные свойства

id: 40677_iface_06_click

Перед вами объявление интерфейса на TypeScript. Внимательно изучите код и определите, какие свойства в этом интерфейсе являются обязательными (т.е. должны присутствовать у любого объекта, соответствующего этому интерфейсу). Отметьте кликом только обязательные свойства. Не отмечайте необязательные свойства (помеченные знаком вопроса `?`), ключевое слово `interface`, имя интерфейса, фигурные скобки и другие служебные элементы кода.

Кликните по всем фрагментам, которые подходят под условие задания.
interface {{UserProfile~|~t0}} {
  {{id~|~t1}}: number;
  {{username~|~t2}}: string;
  {{email~|~t3}}?: string;
  {{age~|~t4}}: number;
  {{isActive~|~t5}}?: boolean;
  {{role~|~t6}}: string;
  {{lastLogin~|~t7}}?: Date;
}
Сообщения
Проверить
Показать подсказку

7. Разметь части интерфейса

id: 40677_iface_07_highlight

В этом задании вам нужно разметить части объявления интерфейса TypeScript. Для каждого выделенного фрагмента укажите, является ли он ключевым словом, именем интерфейса, именем свойства или типом свойства. Это упражнение поможет закрепить понимание структуры интерфейсов в TypeScript и их основных компонентов.

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
{{interface~|~t1}} {{Product~|~t2}} { {{name~|~t3}}: {{string~|~t4}}; {{price~|~t5}}: {{number~|~t6}}; }
Имя интерфейса
Тип свойства
Ключевое слово
Имя свойства
Сообщения
Проверить
Показать подсказку

8. Порядок объявления и использования

id: 40677_iface_08_sequence

Перед вами строки TypeScript-кода, которые описывают объявление и использование интерфейса. Они перемешаны. Расставьте строки в правильном порядке, чтобы получился корректный код: сначала объявляется интерфейс с его свойствами, затем переменная с типом этого интерфейса, и, наконец, присваивание объекта этой переменной.

Расставьте строки в правильном порядке
let user: Person;
  name: string; age: number;
}
user = { name: 'Alice', age: 30 };
interface Person {
Сообщения
Проверить
Показать подсказку

9. Какое значение у свойства?

id: 40677_iface_09_result

В данном фрагменте кода TypeScript определён интерфейс, описывающий структуру объекта, и создан объект, соответствующий этому интерфейсу. Затем выполняется обращение к конкретному свойству этого объекта. Проанализируйте код и определите, какое значение будет выведено при доступе к указанному свойству. Введите одно число или строку (в зависимости от типа свойства) без дополнительных символов.

Что должно получиться?
interface Person {
    name: string;
    age: number;
}

const person: Person = {
    name: "Alice",
    age: 25
};

console.log(person.age);
Сообщения
Проверить
Показать подсказку

TypeScript: компиляция и запуск

id: 40677_compiler

Погрузитесь в мир интерфейсов — фундаментальной части TypeScript для описания структуры объектов. В этом примере вы научитесь создавать «контракты» для данных: попробуйте добавить новое обязательное поле в интерфейс IUser и посмотрите, как компилятор сразу укажет на ошибки в существующих объектах. Экспериментируйте с необязательными свойствами (знак вопроса ?) и попробуйте изменить значения readonly-полей, чтобы увидеть мощь статической типизации. Попробуйте создать свой собственный интерфейс для смартфона или автомобиля, чтобы закрепить материал на практике!

TS
Запустить тренажёр (TypeScript)
НайтиКурс.Ру