Typescript: Свойства параметров
Заполнение свойств из параметров конструктора — это частая задача в работе с классами. Поэтому в TypeScript добавили специальный синтаксис, который позволяет делать это автоматически:
class SomeClass {
constructor(
public one: number,
private two: string,
) {}
get three(): string {
return `${this.one} ${this.two}`;
}
}Этот код делает то же самое, что и этот:
class SomeClass {
public one: number;
private two: string;
constructor(one: number, two: string) {
this.one = one;
this.two = two;
}
get three(): string {
return `${this.one} ${this.two}`;
}
}Новый синтаксис позволяет не дублировать код заполнения свойств из параметров и делает его более лаконичным. Если в конструкторе есть какая-то логика, то свойства все равно заполняются вручную.
Задание
Реализуйте класс CustomFile, в конструктор которого передается имя файла и размер в байтах. Внутри класса определите метод toString(), который должен вернуть форматированную строку в формате <file-name> (<size> bytes). Используйте свойства параметров для заполнения свойств класса.
const file = new CustomFile("open-world.jpeg", 1000);
console.log(file.toString()); // open-world.jpeg (1000 bytes)Полезное
Typescript: Свойства параметров
Заполнение свойств из параметров конструктора — это частая задача в работе с классами. Поэтому в TypeScript добавили специальный синтаксис, который позволяет делать это автоматически:
class SomeClass {
constructor(
public one: number,
private two: string,
) {}
get three(): string {
return `${this.one} ${this.two}`;
}
}Этот код делает то же самое, что и этот:
class SomeClass {
public one: number;
private two: string;
constructor(one: number, two: string) {
this.one = one;
this.two = two;
}
get three(): string {
return `${this.one} ${this.two}`;
}
}Новый синтаксис позволяет не дублировать код заполнения свойств из параметров и делает его более лаконичным. Если в конструкторе есть какая-то логика, то свойства все равно заполняются вручную.
Задание
Реализуйте класс CustomFile, в конструктор которого передается имя файла и размер в байтах. Внутри класса определите метод toString(), который должен вернуть форматированную строку в формате <file-name> (<size> bytes). Используйте свойства параметров для заполнения свойств класса.
const file = new CustomFile("open-world.jpeg", 1000);
console.log(file.toString()); // open-world.jpeg (1000 bytes)Полезное
Ваше упражнение проверяется по этим тестам
import { expect, test } from "vitest";
import CustomFile from "./index";
test("CustomFile", () => {
const file = new CustomFile("foo.txt", 4);
expect(file.toString()).toBe("foo.txt (4 bytes)");
const file2 = new CustomFile("bar.txt", 8);
expect(file2.toString()).toBe("bar.txt (8 bytes)");
});Решение учителя откроется через:
20:00
