Saltar al contenido principal

Классы

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

💵

EnglishMoji!