JavaScript'te Tür Tanımlama Yaklaşımları

JavaScript, güçlü ve esnek bir tipleme sistemine sahip bir programlama dilidir. Bu doğrultuda, farklı tür tanımlama yaklaşımları mevcuttur. İşte JavaScript'te yaygın olarak kullanılan tür tanımlama yaklaşımları:

1. Implicit Typing (Örtük Tiplendirme)

JavaScript'de örtük tiplendirme, değişkenlerin türünün açıkça belirtilmediği bir tür tanımlama yöntemidir. Değişkenlere değer atandığında JavaScript, otomatik olarak veri türünü belirler.

let sayi = 10; // Number
let metin = "Merhaba"; // String
let mantiksal = true; // Boolean

2. Explicit Typing (Açık Tiplendirme)

Açık tiplendirme, değişkenlere türlerinin belirtilmesi gerektiği tür tanımlama yaklaşımıdır. Bu şekilde, değişkenlerin türleri açıkça belirtilir.

let sayi: number = 10;
let metin: string = "Merhaba";
let mantiksal: boolean = true;

3. Nominal Typing (İsimlendirme ile Tiplendirme)

Nominal tip tanımlama, bir türün belirli bir şekilde isimlendirilmesi gerektiği bir tür tanımlama yaklaşımıdır. JavaScript'te bu yaklaşım doğrudan desteklenmez, ancak bazı kütüphaneler veya alt dillerde kullanılabilir.

// Nominal tip tanımlama söz konusu olmadığı için örnek verilememektedir.

4. Structural Typing (Yapısal Tiplendirme)

Yapısal tiplendirme, türlerin sahip oldukları yapıya (özellik ve davranışlara) dayalı olarak eşleştirildiği bir tür tanımlama yaklaşımıdır. Bu nedenle, türlerin yapısı eşleştiğinde, aynı tür olarak kabul edilirler.

interface Kisi {
  ad: string;
  yas: number;
}

function kisiBilgisiAl(kisi: Kisi) {
  console.log(`${kisi.ad}, ${kisi.yas} yaşında.`);
}

let kullanici = { ad: "Ahmet", yas: 30, sehir: "İstanbul" };
kisiBilgisiAl(kullanici); // kullanici nesnesi Kisi yapısına uygun olduğu için kabul edilir.

5. Duck Typing (Ördek Tiplendirme)

Duck typing, bir nesnenin türünü belirlemenin, nesnenin davranışlarını inceleyerek yapıldığı bir tür tanımlama yaklaşımıdır. Eğer bir nesne, gerekli davranışlara sahipse, o nesne verilen tür olarak kabul edilir.

class Kus {
  uc() {
    console.log("Kuş uçuyor.");
  }
}

function ucbilir(takim) {
  takim.uc();
}

let ordek = new Kus();
ucbilir(ordek); // Ördek, uc() metodu olduğu için Kus türü olarak kabul edilir.

Bu tür tanımlama yaklaşımları, JavaScript'te tür yönetimi ve tip güvenliği konularında farklı bakış açıları sunar ve geliştiricilere esneklik sağlar.