Operesheni hizi mbili zinakuruhusu kupata aina kutoka kwa aina na thamani zilizopo — msingi wa programu ya kiwango cha aina (type-level programming).
keyof — muungano (union) wa funguo za aina ya object
interface User { id: number; : ; }
= keyof ;
Operesheni hizi mbili zinakuruhusu kupata aina kutoka kwa aina na thamani zilizopo — msingi wa programu ya kiwango cha aina (type-level programming).
interface User { id: number; : ; }
= keyof ;
const config = { host: "localhost", port: 3000 };
type Config = typeof config; // { host: string; port: number }
typeof (katika nafasi ya aina) hunasa aina iliyokisiwa ya thamani ya wakati wa utekelezaji (runtime value), hivyo hulazimiki kuandika aina kwa kujitegemea.
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
Hapa K extends keyof T huzuia key kuwa funguo halisi tu, na T[K] (aina ya indexed access type) hurejesha aina kamili ya thamani kwa ufunguo huo. Makosa ya kuandika (typos) huwa makosa ya wakati wa kukusanya (compile errors).
const Roles = { Admin: "admin", User: "user" } as const;
type Role = typeof Roles[keyof typeof Roles]; // "admin" | "user"
keyof na typeof huunganisha ulimwengu wa thamani na ulimwengu wa aina.
Zinawezesha ufikiaji wa sifa salama kwa aina, kupata aina kutoka kwa config/constants (chanzo kimoja cha ukweli), na ni vipengele vya msingi vya aina za mapped na conditional.
Ni jinsi unavyoepuka kudumisha kwa mkono ufafanuzi wa aina sambamba.