TypeScript Extract Utility Type
`Extract< T, U >` utility type, `T` kümesinden sadece `U` ile kesişen türleri alır. Yani `T` içindeki `U` ile eşleşen değerleri filtreler. Bu, union türlerden belirli alt kümeleri ayırmak için kullanılır.
Temel Extract Kullanımı
type Status = "pending" | "approved" | "rejected";
type ApprovedOrRejected = Extract<Status, "approved" | "rejected">;
const status: ApprovedOrRejected = "approved";
console.log(status);
// Output: approved
`Extract` ile bir union type içinden başka bir alt set elde edebiliriz. Burada `Status` içinden sadece `approved` ve `rejected` filtrelenmiştir.
Güvenli Rol Tanımlama
type Roles = "admin" | "user" | "guest";
type PublicRoles = Extract<Roles, "user" | "guest" | "anonymous">;
const role: PublicRoles = "guest";
console.log(role);
// Output: guest
Sadece belirli rollerin kullanıcıya açık olmasını istediğimizde `Extract` ile bu roller ayrıştırılabilir. Fazlalık olan `anonymous` dışlanır çünkü `Roles` içinde yoktur.
Gerçek Hayat Örneği: Hata Türlerini Ayırma
type ResponseTypes = "success" | "error" | "timeout";
type ErrorCases = Extract<ResponseTypes, "error" | "timeout">;
const error: ErrorCases = "timeout";
console.log(error);
// Output: timeout
API yanıt türlerinden sadece hata içeren durumları almak istediğimizde `Extract` oldukça faydalıdır. `error` ve `timeout` gibi senaryoları kolayca ayırabiliriz.
Ne Zaman Kullanılır?
`Extract`, özellikle tip güvenli alt kümeler tanımlamak istediğimiz durumlarda ve `discriminated union` yapılarıyla çalışırken büyük kolaylık sağlar.
Geri