Освоение классов в TypeScript: полное руководство по объектно-ориентированному программированию

Объектно-ориентированное программирование (ООП) — это мощная парадигма, которая позволяет разработчикам организовывать и структурировать свой код более модульным и пригодным для повторного использования образом. TypeScript, являющийся расширенной версией JavaScript, обеспечивает расширенную поддержку ООП благодаря синтаксису, основанному на классах. В этой статье мы рассмотрим различные методы и концепции, связанные с классами в TypeScript, а также приведем примеры кода.

Содержание:

  1. Создание класса

  2. Конструкторы и инициализация

  3. Методы класса
    3.1 Методы экземпляра
    3.2 Статические методы

  4. Наследование

  5. Модификаторы доступа

  6. Инкапсуляция

  7. Полиморфизм

  8. Создание класса.
    Чтобы определить класс в TypeScript, мы используем ключевое слово class, за которым следует имя класса. Вот пример:

class Person {
  // Class definition goes here
}
  1. Конструкторы и инициализация.
    Конструкторы — это специальные методы, которые вызываются при создании объекта класса. Они используются для инициализации свойств класса. Вот пример:
class Person {
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
}
  1. Методы класса.
    Методы — это функции, определенные внутри класса, которые можно вызывать в экземплярах класса. Существует два типа методов: методы экземпляра и статические методы.

3.1. Методы экземпляра:
Методы экземпляра связаны с экземплярами классов и могут получать доступ к данным, специфичным для экземпляра. Вот пример:

class Person {
  greet() {
    console.log(`Hello, my name is ${this.name}`);
  }
}
const person = new Person();
person.greet(); // Output: Hello, my name is undefined

3.2. Статические методы:
Статические методы принадлежат самому классу и могут вызываться без создания экземпляра класса. Они полезны для служебных функций или операций, которые не относятся к какому-либо экземпляру. Вот пример:

class MathUtils {
  static add(a: number, b: number): number {
    return a + b;
  }
}
console.log(MathUtils.add(2, 3)); // Output: 5
  1. Наследование:
    Наследование позволяет классу наследовать свойства и методы другого класса. Это способствует повторному использованию кода и позволяет создавать иерархические отношения между классами. Вот пример:
class Employee extends Person {
  constructor(name: string, age: number, employeeId: string) {
    super(name, age);
    this.employeeId = employeeId;
  }
}
const employee = new Employee("John Doe", 30, "E12345");
employee.greet(); // Output: Hello, my name is John Doe
  1. Модификаторы доступа.
    TypeScript предоставляет три модификатора доступа: public, privateи protected. Они контролируют видимость и доступность членов класса. Вот пример:
class Person {
  private name: string;
  protected age: number;
  public greet() {
    console.log(`Hello, my name is ${this.name}`);
  }
}
  1. Инкапсуляция.
    Инкапсуляция — это объединение данных и методов внутри класса, скрывающее детали внутренней реализации от внешнего мира. Модификаторы доступа играют решающую роль в достижении инкапсуляции.

  2. Полиморфизм:
    Полиморфизм позволяет рассматривать объекты разных классов как экземпляры общего суперкласса. Это способствует гибкости и расширяемости кода. Вот пример:

class Shape {
  area() {
    // Common area calculation logic
  }
}
class Rectangle extends Shape {
  area() {
    // Rectangle-specific area calculation logic
  }
}
class Circle extends Shape {
  area() {
    // Circle-specific area calculation logic
  }
}
const shapes: Shape[] = [new Rectangle(), new Circle()];
shapes.forEach((shape) => {
  console.log(shape.area());
});

В этой статье мы рассмотрели различные методы и концепции, связанные с классами в TypeScript. Мы рассмотрели создание классов, конструкторы, методы экземпляров, статические методы, наследование, модификаторы доступа, инкапсуляцию и полиморфизм. Понимание этих концепций позволит вам писать более модульный и удобный в обслуживании код на TypeScript.