Waɗannan masu aiki guda biyu suna ba ka izin na samun nau'ina daga nau'ina da dabi'u da aka sadu - asali na shirye-shirye a matakin nau'i.
keyof — haɗin union na maɓuɓɓukin nau'ina
ts
interface User { id: number; name: string; }
= keyof ;
Waɗannan masu aiki guda biyu suna ba ka izin na samun nau'ina daga nau'ina da dabi'u da aka sadu - asali na shirye-shirye a matakin nau'i.
interface User { id: number; name: string; }
= keyof ;
const config = { host: "localhost", port: 3000 };
type Config = typeof config; // { host: string; port: number }
typeof (a cikin matsayin nau'i) ya kamata dabi'ar da aka kimanta ta jiya, saboda ba za ka buɗe nau'in sosai ba.
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
Here K extends keyof T yana ɗaure key zuwa ainihin mafintoni, da T[K] (nau'in indexed access) yana bada bada jujjuyawar nau'in dabi'a na ke da kyau. Haɗa kewa zu zuwa kuɗin.
const Roles = { Admin: "admin", User: "user" } as const;
type Role = typeof Roles[keyof typeof Roles]; // "admin" | "user"
keyof da typeof suna haɗa duniyar dabi'a da duniyar nau'i.
Su suna abubuwan saniya na haɗin property ta ƙarƙashin ta-faɗi, samun nau'ina daga bayani/duka (tushen gida daya), da saniyoyin gida don jakar da yaliwar nau'in.
Su ne hanya da za ka tashi daga tura jiya ɗaya-ɗaya na nau'ina bayyanannu.