Bu iki operatör var olan türlerden ve değerlerden türler türetmenizi sağlar — tür seviyesi programlamanın temelini oluştururlar.
keyof — bir nesne türünün anahtarlarının birleşimi
ts
interface User { id: number; name: string; }
= keyof ;
Bu iki operatör var olan türlerden ve değerlerden türler türetmenizi sağlar — tür seviyesi programlamanın temelini oluştururlar.
interface User { id: number; name: string; }
= keyof ;
const config = { host: "localhost", port: 3000 };
type Config = typeof config; // { host: string; port: number }
typeof (bir tür konumunda) çalışma zamanı değerinin çıkarılan türünü yakalar, böylece türü ayrı olarak yazmak zorunda kalmazsınız.
function getProp<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const user = { id: 1, name: "Ann" };
getProp(user, "name"); // returns string
getProp(user, "age"); // ❌ Error: "age" is not a key of user
Burada K extends keyof T key parametresini gerçek anahtarlarla sınırlandırır ve T[K] (bir indexed access type) o anahtar için tam değer türünü geri verir. Yazım hataları derleme hatasına dönüşür.
const Roles = { Admin: "admin", User: "user" } as const;
type Role = typeof Roles[keyof typeof Roles]; // "admin" | "user"
keyof ve typeof değer dünyası ile tür dünyasını bağlarlar.
Tür-güvenli özellik erişimi, konfigürasyon/sabitlerden türler türetme (tek kaynak) ve eşlenmiş ve koşullu türler için yapı taşları güçlendirir.
Parallel tür tanımlarını manuel olarak tutmanız gerekmediği yollarıdır.