Middle+
tip Obekt = { ad: string yaş: number } const getObjField = (obj: any, key: any) => { return obj[key] } const user: Obekt = { ad: "Nik", yaş: 25 } const value1 = getObjField(user, "ad") const value2 = getObjField(user, "yaş") const value3 = getObjField(user, "test") const getObjField = <T, K extends keyof T>(obj: T, key: K) => { return obj[key] }
sobes.tech Süni İntellekt
AI-dan cavab
getObjField funksiyasının ilk variantında parametrlər any tipindədir, bu da tiplərin yoxlanmasına imkan vermir və məsələn, mövcud olmayan açarına müraciət zamanı səhvlərə səbəb ola bilər.
İkinci variantda, K extends keyof T məhdudiyyəti ilə generik istifadə olunur, bu da key açarının həqiqətən obj obyektində mövcud olduğunu təmin edir. Bu, funksiyanın təhlükəsizliyini və istifadəsini asanlaşdırır.
Misal:
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"); // Komilash xatosu, "test" açarı Obj-də mövcud deyil
Bu şəkildə, ikinci versiya funksiyanın tip təhlükəsizliyini təmin edir və komilash mərhələsində səhvlərin qarşısını alır.