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.