<CodeTeach/>
TİP GÜVENLİ JAVASCRIPT

TypeScript Kılavuzu

JavaScript'in üzerine inşa edilmiş, statik tipler ekleyerek kodunuzun hata oranını sıfıra indiren Microsoft imzalı üst küme.

🌐 TypeScript Nedir?

TypeScript (TS), JavaScript'in tüm özelliklerini içeren ama ona "statik veri tipleri" ekleyen bir programlama dilidir. Yazdığınız TS kodları derlenirken standart JS koduna dönüştürülür. Amacı, tarayıcıda hata patlamadan önce geliştiriciyi kod editöründe uyarmaktır.

const mesaj: string = "TypeScript Devrede!";
console.log(mesaj);

📥 Tip Tanımlamaları (Type Annotations)

Değişkenlerin hangi veri türünü barındıracağını önceden kilit altına alarak yanlış veri atamalarını tamamen engellersiniz.

let skor: number = 100;
let kullaniciAdi: string = "Ender";
let yetkiliMi: boolean = true;

// skor = "Yuz" -> Hata! Sayısal değişkene metin atanamaz. TS derleyicisi anında durdurur.

📊 Şablon Yapılar (Interfaces)

Objelerin hangi alt anahtara ve veri tiplerine sahip olacağını belirleyen katı mimari kontratlardır.

interface Oyuncu {
    readonly id: number;   // Değiştirilemez salt okunur veri
    isim: string;
    rütbe: string;
    skor?: number;         // "?" işareti bu alanın zorunlu olmadığını (opsiyonel) belirtir
}

const yeniOyuncu: Oyuncu = {
    id: 1048,
    isim: "Arcane",
    rütbe: "Usta"
};

🎛️ Fonksiyonlarda Tip Kontrolü

Fonksiyonların parametrelerine ve geri döndürecekleri (return) verinin türüne sınır getirme protokolü.

// Parametreler sayı olmalı, fonksiyon ise string döndürmeli (: string)
function hasarHesapla(taban: number, carpan: number): string {
    const sonuc = taban * carpan;
    return `Verilen Toplam Hasar: ${sonuc}`;
}

console.log(hasarHesapla(50, 2));

📋 Özel Tipler (Type Aliases)

Belirli değerlerin dışına çıkılmasını engelleyen veya kompleks tipleri birleştiren özel takma isimler.

// Sadece bu üç kelimeden biri seçilebilir:
type Yon = "Kuzey" | "Guney" | "Bati";

let hareketYonu: Yon = "Kuzey"; 
// hareketYonu = "Yukari" -> Hata! Belirlenen tip kümesinin dışında.

⚡ Fonksiyonel Diziler ve Tuple Yapısı

Dizilerin eleman sayılarını ve hangi sırayla hangi tipleri içereceğini sabitleyen gelişmiş liste kontrolleri.

// Standart Tipli Dizi
const diller: string[] = ["TypeScript", "JavaScript"];

// Tuple (Sıralı Sabit Dizi)
let koordinat: [number, number] = [40.7128, -74.0060]; // Sadece iki sayı alabilir