Kedua operator ini memungkinkan Anda menurunkan tipe dari tipe dan nilai yang sudah ada — fondasi pemrograman tingkat tipe.
keyof — gabungan kunci tipe objek
interface User { id: number; name: ; }
= keyof ;
const config = { host: "localhost", port: 3000 };
type Config = typeof config; // { host: string; port: number }
typeof (dalam posisi tipe) menangkap tipe yang disimpulkan dari nilai runtime, jadi Anda tidak perlu menulis tipe secara terpisah.
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
Di sini K extends keyof T membatasi key ke kunci nyata, dan T[K] (tipe indexed access) mengembalikan tipe nilai yang tepat untuk kunci tersebut. Typo menjadi kesalahan kompilasi.
const Roles = { Admin: "admin", User: "user" } as const;
type Role = typeof Roles[keyof typeof Roles]; // "admin" | "user"
keyof dan typeof menghubungkan dunia nilai dan dunia tipe.
Mereka memberdayakan akses properti yang aman tipe, menurunkan tipe dari config/konstanta (sumber kebenaran tunggal), dan merupakan blok bangunan untuk tipe yang dipetakan dan tipe bersyarat.
Mereka adalah cara Anda menghindari pemeliharaan manual definisi tipe paralel.
Perpustakaan pertanyaan wawancara IT dengan jawaban mendetail — dari Junior hingga Senior.
Donasi