Bölüm 3: Fonksiyonlarda TypeScript Kullanımı – Detaylı Öğretici Anlatım

Neden Bu Konu Önemli?
1function greet(name) {2return name.toUpperCase();3}45greet("Yasin"); // ✅6greet(123); // ❌ Runtime hatası!
❗ JavaScript’te yanlış parametre verilse bile derleyici ses çıkarmaz. Hatalar runtime’da fark edilir. TypeScript burada devreye girer.
✅ TypeScript ile Fonksiyon Yazmanın Amaçları:
- Parametre türlerini açıkça belirtmek
- Dönüş tipini tanımlamak
- Compile-time hatası almak
- Kodun niyetini ve güvenliğini artırmak
3.1 Fonksiyon Tipi Tanımlama (Temel)
1function greet(name: string): string {2return `Merhaba, ${name.toUpperCase()}!`;3}
1greet("Yasin"); // ✅2greet(123); // ❌ TS Error
3.2 Arrow Function ile Tip Kullanımı
1const greet = (name: string): string => {2return `Selam, ${name}`;3};
➡️ Alternatif:
1const greet: (name: string) => string = (name) => {2return `Selam, ${name}`;3};
3.3 Opsiyonel Parametreler (?)
1function sayHi(name?: string): string {2return `Merhaba, ${name ?? "Ziyaretçi"}!`;3}
1sayHi(); // Merhaba, Ziyaretçi!2sayHi("Yasin"); // Merhaba, Yasin!
3.4 Varsayılan Parametreler
1function multiply(a: number, b: number = 2): number {2return a * b;3}
1multiply(3); // 62multiply(3, 4); // 12
3.5 Rest Parametreler (...)
1function sumAll(...numbers: number[]): number {2return numbers.reduce((acc, curr) => acc + curr, 0);3}
1sumAll(1, 2, 3); // 62sumAll(10, 20, 30); // 60
3.6 Callback Fonksiyonları ve Fonksiyon Parametre Tipi
1function handleClick(callback: () => void): void {2callback();3}
1handleClick(() => {2console.log("Tıklandı!");3});
3.7 Fonksiyon Tipini Önceden Tanımlama
1type MathOperation = (x: number, y: number) => number;23const add: MathOperation = (a, b) => a + b;4const sub: MathOperation = (a, b) => a - b;
Gerçek Dünya Örneği: Hesap Makinesi Yardımcı Fonksiyonu
1export type Operation = "add" | "subtract" | "multiply" | "divide";23export function calculate(a: number, b: number, op: Operation): number {4switch (op) {5case "add":6return a + b;7case "subtract":8return a - b;9case "multiply":10return a * b;11case "divide":12return a / b;13default:14throw new Error("Bilinmeyen işlem türü");15}16}
1const result = calculate(10, 5, "multiply"); // 50
React Bileşenlerinde Fonksiyon Tipi Kullanımı
1type ButtonProps = {2onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;3};45export default function CustomButton({ onClick }: ButtonProps) {6return <button onClick={onClick}>Tıkla</button>;7}
Mini Ödev / Uygulama
- `getFullName(first: string, last?: string): string` fonksiyonu yaz.
- `logNumbers(...nums: number[]): void` fonksiyonu yaz.
- `handleInput(callback: (value: string) => void): void` fonksiyonu yaz.
- `calculate()` fonksiyonuna yeni literal ekle: `mod`.
Bölüm Özeti
Yapı | Açıklama |
---|---|
param: type | Parametre tipi |
(): returnType | Fonksiyon dönüş tipi |
param?: type | Opsiyonel parametre |
param = default | Varsayılan parametre |
(...args: type[]) | Rest parametre |
callback: () => void | Fonksiyon parametresi |
React.MouseEvent | React event tipi |
✅ Kazanımlar
- Tip güvenli fonksiyonlar yazma
- Opsiyonel, varsayılan ve rest parametreleri doğru kullanma
- Fonksiyonları başka fonksiyonlara parametre olarak geçirme
- React bileşenlerinde event fonksiyonlarına doğru tip verme