Sobes.tech
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.