Получить значение по ключу в объекте — typescript

Получить значение по ключу в объекте — typescript

В этой небольшой заметке давайте напишем функцию, которая будет принимать на вход объект и название свойства для которого она будет возвращать значение. А чтобы было интересно, мы типизируем эту функцию с помощью typescript таким образом, чтобы мы могли передать на вход названия только тех свойств, которые есть в объекте. Итак, поехали:

На самом деле сам код функции достаточно простой, он выглядит вот так:

function getValue<T extends object, U extends keyof T>(obj: T, prop: U): T[U] {
    return obj[prop];
}

Давайте разберем, что есть что.

Так как мы не знаем, какие конкретно объекты могут быть переданы в эту функцию (читай любые), значит для обозначения типов будем использовать дженерики. Но что мы точно знаем? Во-первых то, что переданный объект должен быть объектом, поэтому используем T extends object, это гарантируем нам структуру данных, которая может быть принята первым аргументом. Со вторым аргументом немного сложнее, это должен быть обязательно ключ того объекта, который передан, поэтому пишем U extends keyof T (читай значение, которое является ключом от переданного объекта T). И возвращать будем значение объекта по ключу T[U].

Вот и все, всем удачи!

21.02.23
Для просмотра сайта обновите браузер.