Sobes.tech
Middle+

/ getObjField функциясына типизация жазу / type Obj = { name: string age: number } const getObjField = (obj: any, key: any) => { return obj[key] } const user: Obj = { name: "Nik", age: 25 } const value1 = getObjField(user, "name") const value2 = getObjField(user, "age") const value3 = getObjField(user, "test")

sobes.tech AI

AI-дан жауап

getObjField функциясын типтеу үшін, ол объект пен сол объектіден кілт қабылдап, сәйкес типтегі мәнін қайтаруы үшін, TypeScript-те генерарик және keyof операторын қолдануға болады:

interface 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"); // string
const value2 = getObjField(user, "age");  // number
// const value3 = getObjField(user, "test"); // Қате компиляция: "test" Obj-тің кілті емес

Бұл тәсіл кілт объектте бар екеніне кепілдік береді және қайтарылатын тип өрістің типіне сәйкес келеді.