В TypeScript классы — это основа объектно-ориентированного программирования. Типизация свойств класса позволяет явно указать, какие данные может хранить каждый экземпляр. Это делает код понятнее и безопаснее, предотвращая случайное присваивание неверных значений. Используя TypeScript для обучения онлайн, вы сможете на практике закрепить синтаксис объявления полей.
Каждое свойство в классе может быть объявлено с указанием типа (string, number, boolean, пользовательский тип и др.) и, при необходимости, модификаторов доступа (public, private, protected). Это помогает компилятору находить ошибки на этапе разработки, а не во время выполнения.
Например:
class User {
public name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
Практический тренажер по TypeScript с примерами и заданиями поможет вам разобраться в этой теме без скучной теории. Уроки построены так, чтобы вы сразу применяли знания на практике.
- Модуль 1: Введение в TypeScript
- Модуль 2: Примитивные типы
- Модуль 3: Специальные типы
- Модуль 4: Массивы
- Модуль 5: Кортежи (Tuples)
- Модуль 6: Объекты
- Модуль 7: Функции
- Модуль 8: Union типы
- Модуль 9: Литеральные типы
- Модуль 10: Type Aliases
- Модуль 11: Интерфейсы
- Модуль 12: Type Guards и Narrowing
- Модуль 13: Enums
- Модуль 14: Классы
- Модуль 15: Generics — основы
- Модуль 16: Generics — ограничения
- Модуль 17: Utility Types — базовые
- Модуль 18: Utility Types — работа с Union
- Модуль 19: Utility Types — функции
- Модуль 20: Type Assertions
- Модуль 21: Keyof и Typeof операторы
- Модуль 22: Mapped Types
- Модуль 23: Conditional Types
- Модуль 24: Discriminated Unions
- Модуль 25: Модули и типы
- Модуль 26: Declaration Files
- Модуль 27: Типизация асинхронного кода
- Модуль 28: Практические паттерны
1. Объявление типизированных свойств
Дан фрагмент кода класса Person на TypeScript, в котором объявлены три свойства: name, age и isStudent. Однако в коде пропущены типы этих свойств. Исходя из использования свойств в методах greet и study, определите и впишите правильные типы для каждого свойства. Заполните пропуски так, чтобы код класса был корректно типизирован и компилировался без ошибок.
class Person {
name: input1S;
age: input2S;
isStudent: input3S;
greet() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
study() {
if (this.isStudent) {
console.log(`${this.name} is studying.`);
}
}
}2. Исправь ошибку типизации
В этом фрагменте кода TypeScript есть ошибка типизации: свойству класса присваивается значение несовместимого типа. Найдите строку с ошибкой и исправьте её, изменив либо тип свойства, либо присваиваемое значение, чтобы код стал корректным.
class User { name: string; age: number; constructor(name: string, age: number) { this.name = name; this.age = '25'; }}3. Подбери тип для свойства
В данном задании представлен класс Book, который используется для хранения информации о книге. В коде класса пропущены типы у свойств. Вам необходимо для каждого пропуска (input1, input2, input3, input4) выбрать подходящий тип из выпадающего списка. Обратите внимание на то, как свойства используются в конструкторе и методах класса, чтобы правильно определить их типы.
class Book {
title: input1S;
year: input2S;
available: input3S;
tags: input4S;
constructor(title: string, year: number) {
this.title = title;
this.year = year;
this.available = true;
this.tags = [];
}
markAsUnavailable(): void {
this.available = false;
}
addTag(tag: string): void {
this.tags.push(tag);
}
}4. Сопоставь свойство и тип
Сопоставьте каждое свойство класса с его корректным типом данных в TypeScript. В левой колонке перечислены имена свойств, в правой — возможные типы. Обратите внимание, что типы в правой колонке записаны в синтаксисе TypeScript и каждый тип используется только один раз. Для выполнения задания необходимо вспомнить базовые типы TypeScript и их применение при объявлении свойств класса.
'active' | 'inactive'objectnumberstringstring[]Date5. Что выведет конструктор?
Проанализируйте код на TypeScript, который определяет класс с типизированными свойствами и создаёт его экземпляр через конструктор. Определите, какое значение будет содержаться в указанном свойстве объекта после выполнения кода. Обратите внимание на типы свойств и значения, передаваемые в конструктор.
class User {
name: string;
age: number;
isActive: boolean;
role?: string;
constructor(name: string, age: number, isActive: boolean) {
this.name = name;
this.age = age;
this.isActive = isActive;
}
}
const newUser = new User('Alice', 30, true);
// Какое значение будет у свойства role объекта newUser?6. Собери объявление класса
Из предложенных строк соберите корректное объявление класса Product на TypeScript. Класс должен содержать два типизированных свойства (name и price), конструктор, который инициализирует эти свойства, и метод getInfo, возвращающий строку с информацией о продукте. Две строки являются лишними и не должны входить в решение.
class Product { name: string; price: number; constructor(name: string, price: number) { this.name = name; this.price = price; } getInfo(): string { return `Product: ${this.name}, Price: ${this.price}`; }} category: string; printName(): void { console.log(this.name); }