> Как реализовать функцию getProperty с типизацией в TypeScript, которая возвращает значение по ключу объекта? (TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Иннотех, КИТМЕД, IT-One, RecruitTech, Altenar
Стек: TypeScript
> Пример ответа
В TypeScript реализовать типизированную функцию getProperty можно с использованием обобщённого типа (generic) и оператора keyof. Вот пример:
TYPESCRIPTfunction getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {return obj[key];}
Как это работает:
-
T- тип объекта, который передаётся в функцию. -
K extends keyof T- ключ должен быть допустимым ключом объектаT. -
Возвращаемый тип
T[K]- точный тип значения, соответствующего ключуK.
Пример использования:
TYPESCRIPTinterface User {name: string;age: number;isAdmin: boolean;}const user: User = { name: "Анна", age: 30, isAdmin: true };const userName = getProperty(user, "name"); // тип stringconst userAge = getProperty(user, "age"); // тип number// getProperty(user, "email"); // Ошибка компиляции: "email" не существует в User
Преимущества:
-
Полная типобезопасность: компилятор проверяет и ключ, и возвращаемое значение.
-
Автодополнение ключей в IDE.
-
Исключение ошибок времени выполнения, связанных с несуществующими ключами.
Эта реализация является стандартным паттерном в TypeScript для безопасного доступа к свойствам объектов.
> Похожие задачи по frontend
Что такое enum в TypeScript
Что такое utility types в TypeScript, например Partial и DeepPartial
Как типизировать функцию, работающую с массивом промисов с разными типами в TypeScript
Можно ли создать константу с несуществующим типом в TypeScript?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью