TypeScript Exclude Utility Type
`Exclude< T, U >`, `T` türünden `U` türündekileri çıkararak yeni bir birleşim türü oluşturur. Yani `T` içinden `U` türündekileri çıkarır.
Temel Örnek: Event Tiplerinden Bazılarını Çıkarma
type AllEvents = "click" | "hover" | "scroll" | "resize";
// Remove 'scroll' and 'resize' events
type UserEvents = Exclude<AllEvents, "scroll" | "resize">;
const event1: UserEvents = "click"; // OK
const event2: UserEvents = "hover"; // OK
// const event3: UserEvents = "scroll"; // Error: Type '"scroll"' is not assignable
Tüm eventlerden `scroll` ve `resize` çıkarılarak, sadece kullanıcının etkileşimde bulunduğu eventler kaldı.
Nullable Türlerin Hariç Tutulması
type Primitive = string | number | boolean | null | undefined;
// Exclude null and undefined
type NonNullablePrimitive = Exclude<Primitive, null | undefined>;
const value1: NonNullablePrimitive = "hello"; // OK
const value2: NonNullablePrimitive = 42; // OK
// const value3: NonNullablePrimitive = null; // Error
// const value4: NonNullablePrimitive = undefined; // Error
Nullable türler (null, undefined) çıkarılarak, değerlerin her zaman tanımlı ve geçerli olması sağlandı.
Durum Yönetiminde Kullanımı
type Status = "success" | "error" | "pending";
// Exclude 'pending' status to create 'final' statuses
type FinalStatus = Exclude<Status, "pending">;
function handleStatus(status: FinalStatus) {
if (status === "success") {
console.log("Operation succeeded");
} else {
console.log("Operation failed");
}
}
handleStatus("success"); // OK
handleStatus("error"); // OK
// handleStatus("pending"); // Error
Pending durumunu çıkarıp sadece kesin sonuçları içeren tip tanımlandı. Böylece fonksiyonlarda durumlar kontrol altına alındı.
Neden Kullanılır?
`Exclude` tipi, birleşim tiplerden istenmeyen elemanları çıkarmak için kullanılır. Böylece daha kesin ve kontrollü tipler oluşturulur.
Geri