> Как сделать функцию getProperty с типизацией и проверкой ключей в TypeScript? (TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: IT-One
Стек: TypeScript
> Пример ответа
Вот реализация типизированной функции getProperty с проверкой ключей:
TYPESCRIPTfunction getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {if (!(key in obj)) {throw new Error(`Свойство "${String(key)}" отсутствует в объекте`);}return obj[key];}
Как это работает:
-
T- тип объекта -
K extends keyof T- гарантирует, что ключ является допустимым свойством объекта -
T[K]- возвращаемый тип соответствует типу значения по указанному ключу -
Проверка
key in obj- runtime-валидация на случай, если ключ передан динамически
Пример использования:
TYPESCRIPTinterface User {name: string;age: number;}const user: User = { name: 'Анна', age: 30 };const name = getProperty(user, 'name'); // тип stringconst age = getProperty(user, 'age'); // тип number// getProperty(user, 'email'); // Ошибка компиляции: "email" не входит в keyof User
Дополнительно: Для строгой проверки на этапе компиляции можно использовать satisfies (TypeScript 4.9+):
TYPESCRIPTfunction getPropertySafe<T extends Record<string, unknown>, K extends keyof T>(obj: T, key: K): T[K] {return obj[key];}
> Похожие задачи по frontend
Что такое TypeScript
Что такое интерфейсы и типы в TypeScript, для чего они нужны и чем отличаются?
Что такое типы any и unknown в TypeScript
Что может быть неправильно в решении функции для вычисления площади фигур с использованием типов и интерфейсов TypeScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью