Як використовувати класи TypeScript із простими прикладами

TypeScript надає потужні функції JavaScript, у тому числі концепцію класів, що дозволяє об’єктно-орієнтоване програмування. Класи надають план для створення об’єктів, інкапсуляції даних і визначення поведінки. Цей посібник проведе вас через основи класів TypeScript на простих прикладах.

Що таке клас?

Клас — це план для створення об’єктів із заздалегідь визначеними властивостями та методами. Це допомагає впорядковувати код, сприяти багаторазовому використанню та створювати масштабовані програми. Класи в TypeScript працюють подібно до класів в інших об’єктно-орієнтованих мовах програмування.

Визначення базового класу

Щоб визначити клас у TypeScript, використовуйте ключове слово class, за яким слідує назва класу та набір фігурних дужок, що містить властивості та методи.

Приклад базового класу

Нижче наведено приклад простого класу Person із властивостями та методом:

class Person {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  greet(): void {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

const person1 = new Person("Alice", 30);
person1.greet(); // Output: Hello, my name is Alice and I am 30 years old.

У цьому прикладі клас Person має дві властивості: name і age. Метод конструктора ініціалізує ці властивості, а метод greet виводить вітальне повідомлення.

Модифікатори доступу

TypeScript надає три модифікатори доступу для керування видимістю членів класу:

  • public: учасники доступні з будь-якого місця (за замовчуванням).
  • private: учасники доступні лише в межах класу.
  • protected: члени доступні в межах класу та його підкласів.

Використання модифікаторів доступу

Ось як ви можете використовувати модифікатори доступу в класі TypeScript:

class Animal {
  public name: string;
  private age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  public getAge(): number {
    return this.age;
  }
}

const dog = new Animal("Buddy", 5);
console.log(dog.name); // Output: Buddy
console.log(dog.getAge()); // Output: 5
// console.log(dog.age); // Error: 'age' is private and only accessible within class 'Animal'.

У цьому прикладі name є публічною властивістю, доступною поза класом, тоді як age є приватною властивістю, доступною лише в межах класу.

Спадкування в TypeScript

TypeScript підтримує успадкування, що дозволяє класу успадковувати властивості та методи від іншого класу. Це допомагає повторно використовувати код і створювати ієрархію класів.

Приклад успадкування

Нижче наведено приклад класу Dog, який успадковує базовий клас Animal:

class Animal {
  constructor(public name: string) {}

  makeSound(): void {
    console.log(`${this.name} makes a sound.`);
  }
}

class Dog extends Animal {
  constructor(name: string) {
    super(name); // Call the constructor of the base class
  }

  makeSound(): void {
    console.log(`${this.name} barks.`);
  }
}

const dog = new Dog("Buddy");
dog.makeSound(); // Output: Buddy barks.

У цьому прикладі клас Dog розширює клас Animal і замінює метод makeSound.

Гетери та сетери

TypeScript дозволяє визначати геттери та сетери для властивостей, забезпечуючи контрольований доступ до членів класу.

Приклад геттерів і сеттерів

class Person {
  private _name: string;

  constructor(name: string) {
    this._name = name;
  }

  get name(): string {
    return this._name;
  }

  set name(newName: string) {
    if (newName) {
      this._name = newName;
    } else {
      console.log("Name cannot be empty.");
    }
  }
}

const person = new Person("Alice");
console.log(person.name); // Output: Alice
person.name = "Bob";
console.log(person.name); // Output: Bob

У цьому прикладі доступ до властивості name доступний і змінений за допомогою методів getter і setter.

Висновок

Класи TypeScript — це потужний спосіб писати об’єктно-орієнтований код чистим та ефективним способом. Вони забезпечують структурований спосіб визначення властивостей, методів, модифікаторів доступу, успадкування тощо. Розуміючи, як використовувати класи TypeScript, ви зможете писати надійніший і зручніший код для своїх програм.