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
