ਇਹ ਦੋਵੇਂ ਓਪਰੇਟਰ ਤੁਹਾਨੂੰ ਮੌਜੂਦਾ ਕਿਸਮਾਂ ਅਤੇ ਮੁੱਲਾਂ ਤੋਂ ਕਿਸਮਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਦਿੰਦੇ ਹਨ — ਕਿਸਮ-ਪੱਧਰ ਦੀ ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਦੀ ਬੁਨਿਆਦ।
keyof — ਇੱਕ ਆਬਜੈਕਟ ਕਿਸਮ ਦੀਆਂ ਕੁੰਜੀਆਂ ਦਾ ਸਮੂਹ
ts
interface User { id: number; name: string; }
type = keyof ;
const config = { host: "localhost", port: 3000 };
type Config = typeof config; // { host: string; port: number }
typeof (ਇੱਕ ਕਿਸਮ ਦੀ ਸਥਿਤੀ ਵਿੱਚ) ਇੱਕ ਰਨਟਾਇਮ ਮੁੱਲ ਦੀ ਅਨੁਮਾਨਿਤ ਕਿਸਮ ਨੂੰ ਕਾਪਤ ਕਰਦਾ ਹੈ, ਤਾਂ ਜੋ ਤੁਹਾਨੂੰ ਕਿਸਮ ਨੂੰ ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਲਿਖਣਾ ਨਾ ਪਵੇ।
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
ਇੱਥੇ K extends keyof T key ਨੂੰ ਅਸਲ ਕੁੰਜੀਆਂ ਤਕ ਸੀਮਤ ਕਰਦਾ ਹੈ, ਅਤੇ T[K] (ਇੱਕ indexed access type) ਉਸ ਕੁੰਜੀ ਲਈ ਬਿਲਕੁਲ ਮੁੱਲ ਦੀ ਕਿਸਮ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਤਿਜਰੀਆਂ ਕੰਪਾਇਲ ਗਲਤੀਆਂ ਬਣ ਜਾਂਦੀਆਂ ਹਨ।
const Roles = { Admin: "admin", User: "user" } as const;
type Role = typeof Roles[keyof typeof Roles]; // "admin" | "user"
keyof ਅਤੇ typeof ਮੁੱਲ ਦੀ ਦੁਨਿਆ ਅਤੇ ਕਿਸਮ ਦੀ ਦੁਨਿਆ ਨੂੰ ਜੋੜਦੇ ਹਨ।
ਉਹ ਕਿਸਮ-ਸੁਰੱਖਿਅਤ ਜਾਇਦਾਦ ਦੀ ਪਹੁੰਚ, ਕੌਂਫਿਗ/ਸਥਿਰਤਾਵਾਂ ਤੋਂ ਕਿਸਮਾਂ ਪ੍ਰਾਪਤ ਕਰਨਾ (ਸਿੰਗਲ ਸਾਈ ਦਾ ਸੱਚ), ਅਤੇ ਮੈਪ ਕੀਤੀ ਅਤੇ ਸ਼ਰਤੀ ਕਿਸਮਾਂ ਲਈ ਬਿਲਡਿੰਗ ਬਲਾਕ ਹਨ।
ਇਹ ਉਹ ਢੰਗ ਹੈ ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਸਮਾਨਾਂਤਰ ਕਿਸਮ ਦੀਆਂ ਪਰਿਭਾਸ਼ਾਵਾਂ ਨੂੰ ਹੱਥੀਂ ਬਣਾਈ ਰੱਖਣ ਤੋਂ ਬਚਦੇ ਹੋ।