Sobes.tech
Назад к вопросам
Middle+
2

/ Напиши типизацию для функции 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

Чтобы типизировать функцию getObjField так, чтобы она принимала объект и ключ из этого объекта, и возвращала значение соответствующего типа, можно использовать дженерики и оператор keyof в TypeScript:

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") // string
const value2 = getObjField(user, "age")  // number
// const value3 = getObjField(user, "test") // Ошибка компиляции: "test" не является ключом Obj

Такой подход гарантирует, что ключ существует в объекте, и возвращаемый тип соответствует типу поля.