keyof Tür İşleci
keyof ile bir nesne türünün anahtarlarının birleşimini elde edin.
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) // AdaBirden Ç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.
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.