Geri

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