Basit Örneklerle TypeScript Sınıfları Nasıl Kullanılır
TypeScript, nesne yönelimli programlamaya olanak tanıyan sınıflar kavramı da dahil olmak üzere JavaScript'e güçlü özellikler getirir. Sınıflar, nesneler oluşturmak, verileri kapsüllemek ve davranışları tanımlamak için bir plan sağlar. Bu kılavuz, basit örneklerle TypeScript sınıflarının temellerini size gösterecektir.
Sınıf Nedir?
Bir sınıf, önceden tanımlanmış özelliklere ve yöntemlere sahip nesneler oluşturmak için bir taslaktır. Kodu düzenlemeye, yeniden kullanılabilirliği teşvik etmeye ve ölçeklenebilir uygulamalar oluşturmaya yardımcı olur. TypeScript'teki sınıflar, diğer nesne yönelimli programlama dillerindeki sınıflara benzer şekilde çalışır.
Temel Bir Sınıf Tanımlama
TypeScript'te bir sınıfı tanımlamak için, class
anahtar sözcüğünü, ardından sınıf adını ve özellik ve yöntemleri içeren bir dizi süslü parantezi kullanın.
Temel Sınıf Örneği
Aşağıda özellikleri ve bir metodu olan basit bir Person
sınıfının bir örneği verilmiştir:
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.
Bu örnekte, Person
sınıfının iki özelliği vardır: name
ve age
. Oluşturucu yöntemi bu özellikleri başlatır ve greet
yöntemi bir selamlama mesajı çıktısı verir.
Erişim Değiştiricileri
TypeScript, sınıf üyelerinin görünürlüğünü kontrol etmek için üç erişim değiştiricisi sağlar:
public
: Üyelere her yerden ulaşılabilir (varsayılan).private
: Üyelere yalnızca sınıf içinden erişilebilir.protected
: Üyelere sınıf ve alt sınıfları içerisinden erişilebilir.
Erişim Değiştiricilerini Kullanma
TypeScript sınıfında erişim değiştiricileri şu şekilde kullanılabilir:
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'.
Bu örnekte, name
sınıfın dışından erişilebilen genel bir özelliktir, age
ise yalnızca sınıfın içinden erişilebilen özel bir özelliktir.
TypeScript'te Kalıtım
TypeScript, bir sınıfın başka bir sınıftan özellik ve yöntemleri miras almasına izin veren kalıtımı destekler. Bu, kodu yeniden kullanmaya ve sınıflar arasında bir hiyerarşi oluşturmaya yardımcı olur.
Miras Örneği
Aşağıda, Animal
temel sınıfından miras alan Dog
sınıfının bir örneği gösterilmektedir:
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.
Bu örnekte, Dog
sınıfı Animal
sınıfını genişletir ve makeSound
metodunu geçersiz kılar.
Getter'lar ve Setter'lar
TypeScript, sınıf üyelerine kontrollü erişim sağlayarak, özellikler için getter ve setter tanımlamanıza olanak tanır.
Getters ve Setters Örneği
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
Bu örnekte, name
özelliğine getter ve setter yöntemleri kullanılarak erişilir ve değiştirilir.
Çözüm
TypeScript sınıfları, nesne yönelimli kodu temiz ve verimli bir şekilde yazmanın güçlü bir yoludur. Özellikleri, yöntemleri, erişim değiştiricileri, kalıtımı ve daha fazlasını tanımlamak için yapılandırılmış bir yol sağlarlar. TypeScript sınıflarının nasıl kullanılacağını anlayarak, uygulamalarınız için daha sağlam ve sürdürülebilir kodlar yazabilirsiniz.