Перейти к основному содержимому

Классы

TypeScript реализует объектно-ориентированный подход, в нем есть полноценная поддержка классов. Класс представляет шаблон для создания объектов и инкапсулирует функциональность, которую должен иметь объект. Класс определяет состояние и поведение, которыми обладает объект.

Классы#

Рассмотрим простой пример работы с классами:

Пример

class Greeter {  greeting: string // Свойство greeting, тип строка  constructor(message: string) {    // Конструктор класса Greeter    this.greeting = message  }  greet() {    // Метод класса Greeter    return 'Hello, ' + this.greeting  }}
let greeter = new Greeter('world')
console.log(greeter.greet()) // Вернет строчку Hello world

Объявлен новый класс Greeter. Этот класс имеет три пункта: свойство greeting, конструктор, и метод greet. В последней строке создается экземпляр класса Greeter, используя new. Он вызывает конструктор, что определен ранее, создает новый объект, и запускает конструктор для его инициализации.

Наследование#

В TypeScript используются привычные подходы объектно-ориентированного программирования. Одним из самых фундаментальных подходов в области программирования на основе классов является создание новых классов с помощью наследования.

Пример

class Animal {  name: string  constructor(theName: string) {    this.name = theName  }  move(distanceInMeters: number = 0) {    return this.name + ' moved ' + distanceInMeters + ' m.'  }}
class Snake extends Animal {  constructor(name: string) {    super(name)  }  move(distanceInMeters = 5) {    super.move(distanceInMeters)  }}
class Horse extends Animal {  constructor(name: string) {    super(name)  }  move(distanceInMeters = 45) {    super.move(distanceInMeters)  }}
let sam = new Snake('Sammy the Python')let tom = new Horse('Tommy the Palomino')
sam.move()tom.move(34)

Здесь, ключевое слово extends, используется для создания подкласса. Классы Horse и Snake основаны на классе Animal и они получают доступ к его возможностям. Классы Snake и Horse создают метод move, который переопределяет метод move из класса Animal, придавая ему функциональность, специфичную для каждого из классов.

Отказ от классов#

Так как в курсе нашей школы мы учим разрабатывать мобильные приложения с помощью библиотеки React, где нововведение React Hooks позволяет использовать состояние и другие возможности React без написания классов. Поэтому рассказывать о классах больше нет смысла, так как мы от них отказались.

Вопросы#

Question

Для чего используют классы?

  1. Для создания процедур
  2. Для создания объектов и инкапсулировния функциональности
  3. Для создания процедур и функций

Один из самых фундоментальных подходов в объектно-ориентированном программировании на основе классов.

  1. Наследование
  2. Объекты
  3. Функции

Ссылки:#

  1. Metanit
  2. TypeScript-lang руководство TypeScript

Contributors ✨#

Thanks goes to these wonderful people (emoji key):


Philipp Dvinyaninov

📖

Dmitriy Vasilev

💵

Become a Patron!