Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс Typescript
/

Свойства параметров

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 Constructor Shorthand

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс Typescript
/

Свойства параметров

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 Constructor Shorthand

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

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

waiting_clock
← ПредыдущийСледующий →