Menu
Coddy logo textTech

Union Tipler ('|')

Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 31 / 73.

Bazen duruma göre farklı türlerde değerler tutabilen bir değişkene ihtiyaç duyarsınız. Örneğin, bir kullanıcı kimliği "user123" gibi bir dize veya 42 gibi bir sayı olarak saklanabilir. TypeScript'in union types (birleşim türleri) özelliği, bir değişkenin belirtilen birkaç türden biri olmasına izin vererek bu sorunu çözer.

Union tipleri, birden fazla tipi birleştirmek için dikey çizgi karakterini (|) kullanır. Söz dizimi doğal olarak "bu VEYA şu" şeklinde okunur:

let userId: string | number;

userId = "user123";  // Geçerli - string
userId = 42;         // Geçerli - number
userId = true;       // Hata - boolean'a izin verilmez

Bir birleşimde (union) sadece ilkel türleri değil, herhangi bir türü birleştirebilirsiniz. Bu esneklik, birleşim türlerini özellikle birden fazla girdi formatını kabul etmesi gereken fonksiyon parametreleri için kullanışlı hale getirir:

function displayMessage(content: string | number): void {
  console.log("Message: " + content);
}

displayMessage("Hello!");  // string ile çalışır
displayMessage(404);       // number ile çalışır

Union types, esnekliği korurken tip güvenliği sağlar - TypeScript, yalnızca belirtilen türlerden biriyle eşleşen değerleri kullanmanızı sağlayarak beklenmedik veri türlerinden kaynaklanan çalışma zamanı hatalarını önler.

challenge icon

Görev

Kolay

string | number tipinde id adında bir parametre kabul eden ve bunu konsola yazdıran printId adında bir fonksiyon oluşturun. Fonksiyonun açık bir dönüş tipi void olmalıdır.

boolean | string tipinde data adında bir parametre kabul eden ve bunu değiştirmeden döndüren processValue adında başka bir fonksiyon oluşturun. Fonksiyonun açık bir dönüş tipi boolean | string olmalıdır.

number | string tipinde input adında bir parametre kabul eden ve formatlanmış bir dize döndüren formatOutput adında üçüncü bir fonksiyon oluşturun. Eğer girdi bir sayıysa, "Number: [input]" döndürün. Eğer girdi bir dizeyse, "Text: [input]" döndürün. Fonksiyonun açık bir dönüş tipi string olmalıdır.

Aşağıdaki girdiler sağlanacaktır:

  • Birinci girdi: dize veya sayı olabilen bir değer (printId için)
  • İkinci girdi: boolean veya dize olabilen bir değer (processValue için)
  • Üçüncü girdi: sayı veya dize olabilen bir değer (formatOutput için)

Üç girdiyi okuyun, her fonksiyonu uygun girdiyle çağırın ve çıktıları şu şekilde işleyin:

  • Birinci girdi ile printId fonksiyonunu çağırın (bu doğrudan yazdıracaktır)
  • İkinci girdi ile processValue fonksiyonunu çağırın ve dönen değeri yazdırın
  • Üçüncü girdi ile formatOutput fonksiyonunu çağırın ve dönen değeri yazdırın

Not: Birinci girdi bir dize olarak sağlanacaktır, ancak bir sayıyı temsil ediyorsa (örneğin "123"), printId fonksiyonuna geçirmeden önce onu bir sayıya dönüştürün. İkinci girdi bir dize olarak sağlanacaktır, ancak "true" veya "false" ise, onu karşılık gelen boolean değerine dönüştürün. Üçüncü girdi bir dize olarak sağlanacaktır, ancak bir sayıyı temsil ediyorsa, onu bir sayıya dönüştürün.

Kendin dene

import * as fs from "fs";

// Girdileri oku
const stdinBuffer: Buffer = fs.readFileSync(0);
const inputs: string[] = stdinBuffer.toString().trim().split('\n');
const input1 = inputs[0];
const input2 = inputs[1];
const input3 = inputs[2];

// Girdileri uygun türlere dönüştür
const firstInput = isNaN(Number(input1)) ? input1 : Number(input1);
const secondInput = input2 === "true" ? true : input2 === "false" ? false : input2;
const thirdInput = isNaN(Number(input3)) ? input3 : Number(input3);

// TODO: Kodunuzu buraya yazın
// Üç fonksiyonu oluşturun: printId, processValue ve formatOutput

// TODO: Fonksiyonları uygun girdilerle çağırın ve çıktıları işleyin
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

TypeScript'e Giriş bölümündeki tüm dersler