menu

TypeScript'te Fonksiyon Aşırı Yükleme

Bazen, döndürdüğü değerin türünün iletilen parametrelere bağlı olduğu fonksiyonlarla karşılaşılır. Bunun için TypeScript'te fonksiyon aşırı yüklemesi kullanılır. Bu, fonksiyonun farklı imza varyantlarını belirtmeye olanak tanır.

Bir örnek üzerinden inceleyelim. Bir dizenin karakterlerini harf dizisine bölen bir fonksiyonumuz olduğunu varsayalım:

function splitStr(str: string): string[] { return str.split(''); }

Ayrıca, bir sayının karakterlerini rakam dizisine bölen bir fonksiyonumuz olduğunu da varsayalım:

function splitNum(num: number): number[] { let str: string = String(num); let arr: string[] = str.split(''); return arr.map(elem => +elem); }

Şimdi her iki fonksiyonu tek bir fonksiyonda birleştirelim. Yeni fonksiyon, parametrenin türüne bağlı olarak ya bir sayı dizisi ya da bir string dizisi döndürmelidir.

Fonksiyonumuzun çeşitli imzalarını bildirmek için aşırı yüklemeyi kullanalım:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { // her iki imzanın uygulanması }

Şimdi fonksiyonun uygulamasını yazalım. Kodunda, fonksiyon imzalarından hangisinin tetiklendiğini bir koşulla belirlemeli ve buna bağlı olarak doğru kodu, doğru türde bir sonuçla çalıştırmalıyız:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { if (typeof val === 'string') { return val.split(''); } else { let str: string = String(val); let arr: string[] = str.split(''); return arr.map((elem: string): number => +elem); } }

Diğer dillerin aksine, TypeScript'te aşırı yükleme ile tek bir fonksiyon oluşturulur. Aynı ada sahip ancak farklı imzalara sahip birden fazla fonksiyon oluşturulamaz.

Bir DOM elemanının metnini döndüren veya değiştiren bir fonksiyon yazın. Şu şekilde çalışmalıdır:

text('#elem', 'text'); // metni ayarlar text('#elem'); // mevcut metni döndürür
Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet