Begrip: Klassen
JavaScript ondersteunt een gelimiteerd aantal concepten die gekend zijn uit de cursus object oriented programming. Klassen met public of private properties en methodes, static members en overerving via het extends keyword, kunnen gebruikt worden in elke browser.
TypeScript voeg nog heel wat dingen toe, zoals: interfaces, abstracte klassen, de protected en readonly modifiers, syntactische suiker voor getters en setters en generics.
Statische klassen bestaan niet, noch in JavaScript noch in TypeScript. Statische klassen zijn enkel nodig omdat in objectgeoriënteerde talen historische alle code in een klasse moet staan. Dit is in JavaScript niet het geval, bijgevolg kunnen statische methodes gewoon als functies geëxporteerd worden, of eventueel als onderdeel van een gewoon object.
// Een interface die een methode vastlegt.
import Bar from './bar'
interface Foo {
fooMethod: () => void;
}
// Een abstracte klasse die overerft van de interface Foo
abstract class Bar implements Foo {
// Private properties worden met een # aangeduid.
#somePrivateProperty: string
protected someProtectedProperty: string
somePublicProperty: string
readonly somePublicConstantPropert = 'Value'
// Een abstracte methode die verplicht geïmplementeerd
// moet worden in een conrete subklasse.
abstract someAbstractMethod(): void
fooMethod(): void {
// ... body
}
// Een publieke getter voor een private property.
get somePrivateProperty() {
return this.#somePrivateProperty
}
// Een publieke setter voor de private property.
set somePrivatePropertySetter(value: string) {
this.#somePrivateProperty = value
}
}
class ConcreteBar extends Bar {
#somePrivateProperty: string
someAbstractMethod(): void {
// Body
}
}