TypeScript Birleşim ve Kesişim Türleri

TypeScript, daha güvenli ve daha öngörülebilir kod yazmanıza yardımcı olan güçlü tür sistemi özellikleri sunar. Bu özellikler arasında, karmaşık türleri tanımlama ve yönetmede esneklik sunan birleşim ve kesişim türleri bulunur. Bu makale bu kavramları tanıtır ve kullanımlarını göstermek için örnekler sunar.

Sendika Türleri Nelerdir?

Birleşim türleri, bir değişkenin farklı türlerdeki değerleri tutmasına izin verir. Bu, birkaç türden biri olabilecek bir değeri temsil etmeniz gerektiğinde yararlıdır. Birleşim türleri, | (boru) sembolü kullanılarak belirtilir.

Birlik Türlerini Tanımlama

Bir birleşim türünü tanımlamak için, | simgesiyle ayrılmış birden fazla tür belirtmeniz gerekir:

let value: string | number;

value = "Hello, TypeScript"; // Valid
value = 42; // Valid
value = true; // Error: Type 'boolean' is not assignable to type 'string | number'

Bu örnekte, değer değişkeni bir dize veya bir sayı olabilir, ancak bir boole olamaz.

Fonksiyonlarda Birlik Türlerinin Kullanımı

Birleşim tipleri, parametrelerin veya dönüş tiplerinin birden fazla tip olabildiği fonksiyonlarda özellikle yararlıdır:

function formatValue(value: string | number): string {
  if (typeof value === "string") {
    return value.toUpperCase();
  } else {
    return value.toFixed(2);
  }
}

console.log(formatValue("hello")); // Output: HELLO
console.log(formatValue(123.456)); // Output: 123.46

formatValue fonksiyonu, dize veya sayı olabilen bir parametre alır ve onu buna göre biçimlendirir.

Kavşak Türleri Nelerdir?

Kesişim türleri birden fazla türü tek bir türde birleştirmenize olanak tanır. Bu, kesişim türünün bir değerinin kesişimdeki tüm türleri tatmin edeceği anlamına gelir. Kesişim türleri & (ve işareti) sembolü kullanılarak belirtilir.

Kavşak Türlerinin Tanımlanması

Bir kesişim türünü tanımlamak için, & simgesiyle ayrılmış birden fazla tür belirtmeniz gerekir:

interface Person {
  name: string;
}

interface Employee {
  employeeId: number;
}

type EmployeePerson = Person & Employee;

const john: EmployeePerson = {
  name: "John Doe",
  employeeId: 1234
};

console.log(john.name); // Output: John Doe
console.log(john.employeeId); // Output: 1234

Bu örnekte, EmployeePerson türü, Person ve Employee arayüzlerini birleştirerek hem name hem de employeeId özelliklerine sahip bir tür oluşturur.

Fonksiyonlarda Kesişim Türlerinin Kullanımı

Kesişim tipleri, birden fazla tip özelliği gerektiren fonksiyonlarda da kullanılabilir:

function printEmployeeDetails(employee: Person & Employee): void {
  console.log(`Name: ${employee.name}`);
  console.log(`Employee ID: ${employee.employeeId}`);
}

const jane: EmployeePerson = {
  name: "Jane Smith",
  employeeId: 5678
};

printEmployeeDetails(jane);
// Output:
// Name: Jane Smith
// Employee ID: 5678

printEmployeeDetails fonksiyonu hem Person hem de Employee tiplerini karşılayan bir argüman gerektirir.

Birleşim ve Kesişim Türlerinin Birleştirilmesi

Karmaşık tür tanımları oluşturmak için birleşim ve kesişim türlerini birleştirebilirsiniz:

type Shape = Circle | Rectangle;

interface Circle {
  kind: "circle";
  radius: number;
}

interface Rectangle {
  kind: "rectangle";
  width: number;
  height: number;
}

function getArea(shape: Shape): number {
  if (shape.kind === "circle") {
    return Math.PI * shape.radius * shape.radius;
  } else {
    return shape.width * shape.height;
  }
}

const myCircle: Circle = { kind: "circle", radius: 10 };
const myRectangle: Rectangle = { kind: "rectangle", width: 20, height: 30 };

console.log(getArea(myCircle)); // Output: 314.159...
console.log(getArea(myRectangle)); // Output: 600

Bu örnekte, Shape türü Circle ve Rectangle türlerinin birleşimidir ve getArea fonksiyonu her iki türü de buna göre işler.

Çözüm

TypeScript'teki Birleşim ve kesişim türleri, türleri yönetmek ve birleştirmek için güçlü yollar sunar ve tür tanımlarında esneklik ve kesinlik sunar. Birleşim türleri, bir değişkenin birkaç türden biri olmasına izin verirken, kesişim türleri birden fazla türü birleştirir. Bu özellikleri kullanarak daha sağlam ve tür açısından güvenli uygulamalar oluşturabilirsiniz.

Birleşim ve kesişim türlerini kullanarak pratik yapın; bu türlerin yeteneklerine alışın ve TypeScript kodlama becerilerinizi geliştirin.