TypeScript Academy · Ders

keyof Tür İşleci

keyof ile bir nesne türünün anahtarlarının birleşimini elde edin.

2. ders / 413 adım

keyof Tür İşleci, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.

Bir Türün key Değerleri

keyof işleci, bir nesne türünü alır ve özellik key değerlerinin bir birleşimini üretir. Tür güvenli özellik erişiminin ve genel tür key yardımcılarının temelini oluşturur.

Temel keyof

Bir arayüze keyof uygulayarak key adlarını string sabit türleri olarak içeren bir birleşim elde edersiniz.

interface User {
  id: number
  name: string
}
type UserKeys = keyof User // "id" | "name"
const k: UserKeys = "name"
console.log(k)

Yalnızca Geçerli key Değerlerine İzin Verilir

keyof T türündeki bir değişken yalnızca T türünün gerçek key değerlerinden birini içerebilir. Yazım hataları ve geçersiz key değerleri derleme zamanında yakalanır.

interface User { id: number; name: string }
const valid: keyof User = "id"
// const bad: keyof User = "email" // Error: not a key of User
console.log(valid)

typeof ile keyof

Bir değerin çıkarılan türündeki key değerlerini almak için typeof ile birleştirin. Burada bir arayüz yazmadan bir config nesnesinin key değerlerini elde ederiz.

const config = { host: "localhost", port: 8080 }
type ConfigKey = keyof typeof config // "host" | "port"
const key: ConfigKey = "port"
console.log(config[key])

String Dizin İmzasında keyof

String dizin imzasına sahip bir tür için keyof, string | number olur; çünkü her string key değerine izin verilir ve sayısal key değerleri stringlere dönüştürülür.

type Dict = { [key: string]: number }
type DictKeys = keyof Dict // string | number
const k: DictKeys = "anything"
console.log(k)

Number Dizin İmzasında keyof

Number dizin imzası için keyof yalnızca number olur. Bu, dizilerin sayısal dizinleri kullanıma sunma biçimiyle uyumludur.

type NumDict = { [i: number]: string }
type NumKeys = keyof NumDict // number
const k: NumKeys = 0
console.log(k)

Bir Dizi Türünde keyof

Bir dizi türüne keyof uygulandığında şaşırtıcı bir birleşim elde edilir: sayısal dizinlerin yanı sıra length ve push gibi tüm dizi method ve özellik adları da buna dahildir.

type ArrKeys = keyof string[]
// number | "length" | "push" | "map" | ... many more
const k: ArrKeys = "length"
console.log(k)

key Değerleri Güvenle Yineleme

Yalnızca geçerli key değerlerine dokunan döngüler yazmak için keyof kullanın. Object.keys ifadesini (keyof T)[] türüne dönüştürmek, dizin erişimini tür güvenli tutar.

interface User { id: number; name: string }
const u: User = { id: 1, name: "Ada" }
const keys = Object.keys(u) as (keyof User)[]
for (const k of keys) console.log(k, u[k])

Genel Tür Sınırlamalarında keyof

Genel bir key parametresi genellikle K extends keyof T ile sınırlandırılır. Bu, key değerinin nesnede gerçekten var olmasını garanti eder.

function pluck<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key]
}
const name = pluck({ id: 1, name: "Ada" }, "name")
console.log(name) // Ada

Birden Çok key Değerini Birleştirme

keyof T bir birleşim olduğundan, bu birleşimi kesiştirebilir veya filtreleyebilirsiniz. Burada bir işlev, geçerli key değerlerinden oluşan bir dizi kabul eder.

function pick<T, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {
  const out = {} as Pick<T, K>
  for (const k of keys) out[k] = obj[k]
  return out
}
console.log(pick({ a: 1, b: 2, c: 3 }, ["a", "c"]))

keyof Neden Önemlidir

keyof, özellik adlarını denetlenebilir bir türe dönüştürür ve var olmayan bir key değerine başvuramayan genel alıcılar, ayarlayıcılar ve eşleyiciler oluşturmayı sağlar. İleri düzey TypeScript'te her yerde kullanılır.

interface Settings { theme: string; size: number }
function has<T>(obj: T, key: keyof T): boolean {
  return key in (obj as object)
}
console.log(has<Settings>({ theme: "x", size: 1 }, "theme"))

Hızlı Kontrol

keyof işlecini ne kadar anladığınızı sınayın.

Özet

keyof T, T türünün özellik key değerlerini sabit türleri olarak içeren bir birleşim üretir ve değişkenleri geçerli key değerleriyle sınırlar. String dizin imzaları için string | number, number dizin imzaları için number döndürür. typeof ile birlikte değerlerden key değerleri türetir; genel türlerle (K extends keyof T) birlikte tür güvenli alıcıları, seçicileri ve yinelemeyi mümkün kılar.

Başlamak ücretsiz

Yapay zeka eğitmeniyle TypeScript öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
101
Dersler
352

Sıkça Sorulan Sorular

“keyof Tür İşleci” dersi ücretsiz mi?

Evet — “keyof Tür İşleci” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.

“keyof Tür İşleci” dersinde ne öğreneceğim?

keyof ile bir nesne türünün anahtarlarının birleşimini elde edin. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“keyof Tür İşleci” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. typeof Tür İşleci
  2. keyof Tür İşleci
  3. Dizinli Erişim Türleri
  4. typeof ve keyof'yu Birleştirme
← TypeScript Academy Sayfasına Dön