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.