TypeScript'te Fonksiyonlar
Bu makale, TypeScript'teki fonksiyonları açıklar.
YouTube Video
TypeScript'te Fonksiyonlar
TypeScript'teki fonksiyonlar, tür açıklamaları eklenmiş JavaScript fonksiyonlarıdır. TypeScript'te, fonksiyonların girdi (parametre) ve çıktı (dönüş değeri) türlerini net bir şekilde tanımlayarak daha sağlam bir kod yazabilirsiniz. Aşağıda, TypeScript'teki fonksiyonları tanımlamanın temel yöntemlerini ve bazı özelliklerini tanıtıyoruz.
Temel Fonksiyon Tanımı
1function add(x: number, y: number): number {
2 return x + y;
3}
4
5console.log(add(5, 10)); // 15
add
fonksiyonu,number
türünde iki argüman alır venumber
türünde bir değer döndürür.x
vey
isminde iki argüman alır, her ikisi de açıkça belirtilmiş şekildenumber
türündedir.- Dönüş türü de
: number
olarak belirtilmiştir.
Anonim Fonksiyonlar (Fonksiyon İfadeleri)
TypeScript'te anonim fonksiyonlar ve fonksiyon ifadeleri de kullanılabilir. Türler aynı şekilde açıklanabilir.
1const multiply = function (x: number, y: number): number {
2 return x * y;
3};
4
5console.log(multiply(3, 4)); // 12
- Anonim bir fonksiyonu bir değişkene atayabilir ve daha sonra çağırabilirsiniz.
1const factorial = function fact(n: number): number {
2 if (n <= 1) return 1;
3 return n * fact(n - 1); // Can call itself recursively
4};
5
6console.log(factorial(5)); // 120
- Özyinelemeli çağrıları etkinleştirmek için isimli fonksiyon ifadesi kullanabilirsiniz.
Ok Fonksiyonları (Arrow Functions)
Ok fonksiyonlarıyla da tür açıklamaları kullanılabilir.
1const subtract = (x: number, y: number): number => {
2 return x - y;
3};
4
5console.log(subtract(10, 4)); // 6
Bu kod, iki sayıyı argüman olarak alan ve farklarını döndüren, tür ek açıklamalarıyla tanımlanmış bir subtract
ok fonksiyonu tanımlar.
Opsiyonel ve Varsayılan Parametreler
Parametreler opsiyonel hale getirilebilir veya varsayılan değerler atanabilir.
Opsiyonel Parametreler
Parametre adının sonuna ?
eklemek onu opsiyonel hale getirir.
1function greet(name?: string): string {
2 return name ? `Hello, ${name}` : "Hello!";
3}
4
5console.log(greet()); // Hello!
6console.log(greet("Alice")); // Hello, Alice
Bu kod, isteğe bağlı bir argüman kabul eder; argüman sağlanırsa ismi kullanarak selamlar, aksi takdirde genel bir selam döndürür.
Varsayılan Parametreler
Parametreler için varsayılan değerler de belirtebilirsiniz.
1function greetWithDefault(name: string = "Guest"): string {
2 return `Hello, ${name}`;
3}
4
5console.log(greetWithDefault()); // Hello, Guest
6console.log(greetWithDefault("Bob")); // Hello, Bob
Bu fonksiyon, hiçbir argüman verilmezse varsayılan değer olarak "Guest"
kullanır ve belirtilen veya varsayılan isimle selamlar.
Fonksiyon Tür Tanımı
Fonksiyonun kendisinin türünü tanımlamak da mümkündür. Örneğin, bu bir fonksiyon argüman olarak geçirildiğinde kullanılır.
1type Operation = (x: number, y: number) => number;
2
3const addOperation: Operation = (x, y) => x + y;
4const multiplyOperation: Operation = (x, y) => x * y;
5
6console.log(addOperation(2, 3)); // 5
7console.log(multiplyOperation(2, 3)); // 6
Bu kod, iki sayı alıp bir sayı döndüren bir Operation
fonksiyon türü tanımlar, ardından bunu toplama ve çarpma fonksiyonları oluşturmak ve çalıştırmak için kullanır.
Bir Dönüş Değeri Olmadığında (void
türü)
Dönüş değeri olmayan fonksiyonlar için void
türünü belirtin.
1function logMessage(message: string): void {
2 console.log(message);
3}
4
5logMessage("This is a message."); // This is a message.
Bu kod, bir dize mesajı alan ve herhangi bir değer döndürmeden konsola yazdıran void
türünde bir logMessage
fonksiyonu tanımlar.
Geri Çağırma Fonksiyonu
Bir fonksiyonu başka bir fonksiyona argüman olarak geçirmek ve daha sonra çalıştırılmasını sağlamak işlemi geri çağırma fonksiyonu olarak adlandırılır. Asenkron işlemler ve olay yönetiminde sıkça kullanılır.
1function processData(callback: (data: string) => void): void {
2 const data: string = "Processed Data";
3 callback(data);
4}
5
6processData((result: string): void => {
7 console.log(result);
8});
Bu örnekte, konsola bir değer yazdıran bir fonksiyon geri çağırma fonksiyonu olarak geçirilmiştir.
Alternatif olarak, type
veya interface
kullanarak bir geri çağırma türü tanımlayabilirsiniz.
1type Callback = (data: string) => void;
2
3function processData(callback: Callback): void {
4 const data: string = "Processed Data";
5 callback(data);
6}
7
8processData((result: string): void => {
9 console.log(result);
10});
type
veya interface
kullanarak bir geri çağırma türü tanımlamak, tekrar kullanılabilirliği artırır.
Fonksiyon Aşırı Yüklenmesi
Fonksiyon aşırı yükleme, aynı ada sahip ancak farklı parametre listelerine sahip fonksiyonlar tanımlamanıza olanak tanır. TypeScript'te aynı ada sahip birden fazla fonksiyon tanımlayabilir ve parametrelerin türlerine ve sayılarına bağlı olarak farklı işlemler gerçekleştirebilirsiniz.
1// Overload Signature
2function double(value: number): number;
3function double(value: string): string;
4
5// Implementation Signature
6function double(value: number | string): number | string {
7 if (typeof value === "number") {
8 return value * 2;
9 } else if (typeof value === "string") {
10 return value + value;
11 }
12}
13
14console.log(double(10)); // 20
15console.log(double("Hello")); // HelloHello
TypeScript'te aşırı yüklenme şu şekilde gerçekleştirilir:.
-
Aşırı Yükleme İmzası
- Fonksiyonun nasıl kullanılabileceğini tanımlar (imzası). Bu kısım birden fazla kez yazılarak aşırı yükleme mümkün hale gelir.
-
Uygulama İmzası
- Gerçek fonksiyon gövdesini uygular. Bu kısım yalnızca bir kez tanımlanır ve aşırı yükleme imzalarında belirtilen tüm durumları işler.
Aşırı Yükleme Kuralları
Fonksiyon aşırı yüklenmesi için aşağıdaki kurallar geçerlidir:.
-
Aşırı Yükleme İmzası Tanımlarının Sırası
- Değerlendirme yukarıdan aşağıya gerçekleştiğinden, önce özel türlerin, ardından daha genel türlerin tanımlanması önerilir.
-
Uygulama İmzasının Uyumluluğu
- Uygulama imzası, tüm aşırı yükleme imzalarının argümanları ve dönüş değerleriyle uyumlu olmalıdır.
-
Aşırı Yükleme İmzalarında Detayları Belirtin
- Uygulama imzası genellikle belirsiz olabilir, bu nedenle detaylar aşırı yükleme imzalarında belirtilmelidir.
- Sadece uygulama imzası tanımlanırsa, işlev için tür çıkarımı yetersiz olacaktır.
Özet
TypeScript'teki fonksiyonların aşağıdaki özellikleri vardır.
- Tip Açıklamaları
- Argümanlar ve dönüş değerleri için tip belirterek, daha güvenli kod yazabilirsiniz.
- Anonim Fonksiyonlar ve Ok Fonksiyonları
- JavaScript'te olduğu gibi kullanılabilirler ve tip açıklamaları eklemek tip güvenliğini artırır.
- Opsiyonel ve Varsayılan Parametreler
- Gerekirse argüman belirtimini daha esnek hale getirebilirsiniz.
- Fonksiyon Tip Tanımlamaları
- Tip kontrolü yapmak için fonksiyonun tipini tanımlayın.
- Fonksiyon Aşırı Yüklemesi
- Aynı fonksiyon adıyla farklı argümanları destekleyebilirsiniz.
Bunları kullanarak TypeScript'te daha net ve sağlam bir kod yazabilirsiniz.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.