Jak używać klas TypeScript z prostymi przykładami
TypeScript wprowadza potężne funkcje do JavaScript, w tym koncepcję klas, która umożliwia programowanie obiektowe. Klasy zapewniają plan tworzenia obiektów, hermetyzowania danych i definiowania zachowań. Ten przewodnik przeprowadzi Cię przez podstawy klas TypeScript za pomocą prostych przykładów.
Czym jest klasa?
Klasa to plan tworzenia obiektów z predefiniowanymi właściwościami i metodami. Pomaga w organizowaniu kodu, promowaniu możliwości ponownego użycia i tworzeniu skalowalnych aplikacji. Klasy w TypeScript działają podobnie do klas w innych obiektowych językach programowania.
Definiowanie klasy podstawowej
Aby zdefiniować klasę w TypeScript, należy użyć słowa kluczowego class
, po którym należy podać nazwę klasy i zestaw nawiasów klamrowych zawierający właściwości i metody.
Przykład podstawowej klasy
Poniżej znajduje się przykład prostej klasy Person
z właściwościami i metodą:
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet(): void {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
const person1 = new Person("Alice", 30);
person1.greet(); // Output: Hello, my name is Alice and I am 30 years old.
W tym przykładzie klasa Person
ma dwie właściwości: name
i age
. Metoda konstruktora inicjuje te właściwości, a metoda greet
wyprowadza wiadomość powitalną.
Modyfikatory dostępu
TypeScript udostępnia trzy modyfikatory dostępu umożliwiające kontrolę widoczności elementów klasy:
public
: Dostęp do członków jest możliwy z dowolnego miejsca (domyślnie).private
: Członkowie są dostępni tylko w obrębie klasy.protected
: Elementy są dostępne w obrębie klasy i jej podklas.
Korzystanie z modyfikatorów dostępu
Oto jak można używać modyfikatorów dostępu w klasie TypeScript:
class Animal {
public name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public getAge(): number {
return this.age;
}
}
const dog = new Animal("Buddy", 5);
console.log(dog.name); // Output: Buddy
console.log(dog.getAge()); // Output: 5
// console.log(dog.age); // Error: 'age' is private and only accessible within class 'Animal'.
W tym przykładzie name
jest właściwością publiczną, dostępną spoza klasy, natomiast age
jest właściwością prywatną, dostępną tylko w obrębie klasy.
Dziedziczenie w TypeScript
TypeScript obsługuje dziedziczenie, co pozwala klasie dziedziczyć właściwości i metody z innej klasy. Pomaga to w ponownym użyciu kodu i tworzeniu hierarchii klas.
Przykład dziedziczenia
Poniżej znajduje się przykład klasy Dog
dziedziczącej po klasie bazowej Animal
:
class Animal {
constructor(public name: string) {}
makeSound(): void {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
constructor(name: string) {
super(name); // Call the constructor of the base class
}
makeSound(): void {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog("Buddy");
dog.makeSound(); // Output: Buddy barks.
W tym przykładzie klasa Dog
rozszerza klasę Animal
i nadpisuje metodę makeSound
.
Gettery i settery
TypeScript umożliwia definiowanie metod getter i setter dla właściwości, zapewniając kontrolowany dostęp do elementów klasy.
Przykład getterów i setterów
class Person {
private _name: string;
constructor(name: string) {
this._name = name;
}
get name(): string {
return this._name;
}
set name(newName: string) {
if (newName) {
this._name = newName;
} else {
console.log("Name cannot be empty.");
}
}
}
const person = new Person("Alice");
console.log(person.name); // Output: Alice
person.name = "Bob";
console.log(person.name); // Output: Bob
W tym przykładzie do właściwości name
uzyskuje się dostęp i ją modyfikuje za pomocą metod getter i setter.
Wniosek
Klasy TypeScript to potężny sposób pisania kodu obiektowego w czysty i wydajny sposób. Zapewniają ustrukturyzowany sposób definiowania właściwości, metod, modyfikatorów dostępu, dziedziczenia i innych. Rozumiejąc, jak używać klas TypeScript, możesz pisać bardziej solidny i łatwiejszy w utrzymaniu kod dla swoich aplikacji.