Middle+
típus Obiekt = { név: string életkor: number } const getObjField = (obj: any, key: any) => { return obj[key] } const user: Obiekt = { név: "Nik", életkor: 25 } const value1 = getObjField(user, "név") const value2 = getObjField(user, "életkor") const value3 = getObjField(user, "test") const getObjField = <T, K extends keyof T>(obj: T, key: K) => { return obj[key] }
sobes.tech MI
Válasz az MI-től
Az első változatban a getObjField függvény paraméterei any típusúak, ami nem teszi lehetővé a típusellenőrzést, és hibákhoz vezethet, például ha nem létező kulcsot próbálunk elérni.
A második változatban generikus típus használata történik a K extends keyof T korlátozással, ami garantálja, hogy a key kulcs valóban létezik az obj objektumban. Ez növeli a függvény biztonságát és kényelmét.
Példa:
type Obj = {
name: string;
age: number;
};
const getObjField = <T, K extends keyof T>(obj: T, key: K): T[K] => {
return obj[key];
};
const user: Obj = { name: "Nik", age: 25 };
const value1 = getObjField(user, "name"); // típus: string
const value2 = getObjField(user, "age"); // típus: number
// const value3 = getObjField(user, "test"); // Fordítási hiba, a "test" kulcs nem létezik az Obj-ben
Így a második változat biztosítja a típusbiztonságot és megakadályozza a fordítási hibákat.