Sobes.tech
Middle+

tip Obiekt = { ime: string starost: number } const getObjField = (obj: any, key: any) => { return obj[key] } const user: Obiekt = { ime: "Nik", starost: 25 } const value1 = getObjField(user, "ime") const value2 = getObjField(user, "starost") const value3 = getObjField(user, "test") const getObjField = <T, K extends keyof T>(obj: T, key: K) => { return obj[key] }

sobes.tech АИ

Одговор од АИ

U prvom variantu funkcije getObjField, parametri imaju tip any, što ne omogućava proveru tipova i može dovesti do grešaka, na primer, prilikom pristupa nepostojećem ključu.

U drugom variantu, koristi se generički tip sa ograničenjem K extends keyof T, što garantuje da ključ key zaista postoji u objektu obj. To povećava sigurnost i udobnost korišćenja funkcije.

Primer:

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"); // tip: string
const value2 = getObjField(user, "age");  // tip: number
// const value3 = getObjField(user, "test"); // Greška pri kompilaciji, ključ "test" ne postoji u Obj

Na ovaj način, druga verzija funkcije obezbeđuje sigurnost tipova i sprečava greške pri kompilaciji.