CodeBlanks Logo Icon CodeBlanks

Function overloads

Fonksiyon aşırı yüklemesini öğrenirsin.

Function overloads

Fonksiyon aşırı yükleme (overloading), bir fonksiyonun farklı parametre desenleri için birden çok tür imzası tanımlamasını sağlar. Önce imzaları, sonra tek bir uygulama gövdesi yazarsın.

function bicim(deger: number): string;
function bicim(deger: string): string;
function bicim(deger: number | string): string {
  return "Sonuç: " + deger;
}

İmzalar farklı çağrı desenlerini, gövde ise ortak uygulamayı tanımlar.

Aşırı yükleme uygulaması

Uygulama imzası çağıranlar tarafından görülmez; yalnızca aşırı yükleme imzaları görünür. Uygulama gövdesi tüm imzaların durumlarını ele almalıdır. Bu, tek bir fonksiyonun farklı şekillerde çağrılabilmesini sağlar.

function cevir(deger: string): number;
function cevir(deger: number): number;
function cevir(deger: string | number): number {
  return Number(deger);
}

Aşırı yükleme, tek fonksiyona farklı türlerde çağrı yapmayı mümkün kılar.

Uygulama Birleşik tür parametreli fonksiyon yaz

bicim adında bir fonksiyon tanımla; deger parametresi number | string ve dönüş türü string olsun. Fonksiyon "Sonuç: " + deger değerini döndürsün. bicim(42) çağrısının sonucunu console.log ile yazdır.

Başlangıç kodu

index.ts
// bicim adında bir fonksiyon tanımla
// deger parametresi number | string, dönüş türü string olsun
// "Sonuç: " + deger değerini döndür
// bicim(42) sonucunu yazdır

Örnek çözüm

index.ts
function bicim(deger: number | string): string {
    return "Sonuç: " + deger;
}
console.log(bicim(42));

Beklenen çıktı

Sonuç: 42

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Fonksiyon aşırı yüklemenin (overloading) amacı nedir?

  • Fonksiyonları daha hızlı çalıştırmak
  • Parametre türlerini engellemek
  • Birden çok değer döndürmek
  • Farklı çağrı desenleri için birden çok tür imzası sağlamak Doğru cevap

Açıklama: Aşırı yükleme, tek fonksiyonun farklı parametre türleri veya sayıları için ayrı imzalar sunmasını sağlar; bu, çağrı yerinde doğru tür denetimini mümkün kılar.

2 İkinci aşırı yükleme imzasını tamamla

Soru
function cevir(deger: string): number;
function cevir(deger: ____): number;
function cevir(deger: string | number): number {
  return Number(deger);
}
Cevap
function cevir(deger: string): number;
function cevir(deger: number): number;
function cevir(deger: string | number): number {
  return Number(deger);
}

Açıklama: İkinci imza <code>number</code> kabul eden bir çağrı desenini tanımlar; <code>string</code> ilk imzayla aynı olur, <code>boolean</code> ve <code>void</code> sayı dönüşümü için anlamsızdır.

3 Overloads kavramları

Kavram Anlamı
function f(a: number): string; Aşırı yükleme imzası
function f(a: number | string): string { ... } Uygulama gövdesi
Overload signatures Çağrı desenlerini tanımlar
Implementation Tüm durumları ele alır

Başlangıç bölümündeki tüm dersler