Классы
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 без написания классов. Поэтому рассказывать о классах больше нет смысла, так как мы от них отказались.
Вопросы
Для чего используют классы?
- Для создания процедур
- Для создания объектов и инкапсулировния функциональности
- Для создания процедур и функций
Один из самых фундоментальных подходов в объектно-ориентированном программировании на основе классов.
- Наследование
- Объекты
- Функции
Ссылки:
Contributors ✨
Thanks goes to these wonderful people (emoji key):
Philipp Dvinyaninov | Dmitriy Vasilev 💵 |