Parçacıklara Dön
TypeScriptTypeScript

TypeScript Enum Alternatifleri

Const nesneler ve union tipler kullanarak tip güvenli enum alternatifleri.

typescriptenumconstpattern
class=class="text-emerald-400">"text-gray">// Instead of: enum Status { Active, Inactive, Pending }
class=class="text-emerald-400">"text-gray">// Use a const object:
const Status = {
  Active: class=class="text-emerald-400">"text-emerald-400">'active',
  Inactive: class=class="text-emerald-400">"text-emerald-400">'inactive',
  Pending: class=class="text-emerald-400">"text-emerald-400">'pending',
} as const

type Status = (typeof Status)[keyof typeof Status]
class=class="text-emerald-400">"text-gray">// Result: class=class="text-emerald-400">"text-emerald-400">'active' | class=class="text-emerald-400">"text-emerald-400">'inactive' | class=class="text-emerald-400">"text-emerald-400">'pending'

class=class="text-emerald-400">"text-gray">// With display labels
const StatusLabel: Record<Status, string> = {
  active: class=class="text-emerald-400">"text-emerald-400">'Active',
  inactive: class=class="text-emerald-400">"text-emerald-400">'Inactive',
  pending: class=class="text-emerald-400">"text-emerald-400">'Pending',
}

class=class="text-emerald-400">"text-gray">// Type guard
function isStatus(value: string): value is Status {
  return Object.values(Status).includes(value as Status)
}

class=class="text-emerald-400">"text-gray">// Usage
function getLabel(status: Status): string {
  return StatusLabel[status]
}

console.log(getLabel(Status.Active)) class=class="text-emerald-400">"text-gray">// class=class="text-emerald-400">"text-emerald-400">'Active'

Nasıl Kullanılır

Daha iyi tree-shaking ve tip çıkarımı için enum'ları const nesnelerle değiştirin. Bu kalıp otomatik tamamlama, tip güvenliği sağlar ve değerler JSON serileştirme ile doğal olarak çalışan düz stringlerdir.

İlgili Teknoloji

TypeScript

Aklınızda Bir Proje mi Var?

Fikrinizi nasıl hayata geçirebileceğimizi konuşalım. İlk konseptten üretime hazır ürüne kadar — yanınızdayız.

veya ücretsiz görüşme ayarlayın