Назад к вопросам
IT One
Middle+
1
const X = { a: 1, b: 2, c: 3, d: 4 } function getProperty(obj, key) { // Задача типизировать функцию return obj[key] } getProperty(X, 'a') // нет ошибки getProperty(X, ' ') // ошибка ключ и не является ключем для объекта X getProperty({ name: 'Sergey' }, 'name') // нет ошибки
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Чтобы типизировать функцию getProperty так, чтобы она принимала объект и ключ, который точно существует в этом объекте, можно использовать дженерики и оператор keyof в TypeScript:
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const X = { a: 1, b: 2, c: 3, d: 4 };
getProperty(X, 'a'); // ОК
getProperty(X, ' '); // Ошибка: тип " " не является ключом объекта X
getProperty({ name: 'Sergey' }, 'name'); // ОК
Здесь K extends keyof T гарантирует, что ключ key принадлежит объекту obj. Это предотвращает передачу несуществующих ключей и позволяет получить корректный тип возвращаемого значения.