Как получить тип одного из ключа объекта и использовать для аргумента функции в TS?

В TypeScript можно получить тип одного из ключей объекта и использовать его в качестве аргумента функции, используя ключевое слово keyof и индексированные типы.

Предположим, у нас есть объект obj, и мы хотим получить тип одного из его ключей и использовать его в функции doSomething.

const obj = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
};

function doSomething(key: keyof typeof obj) {
  // ...
}

В этом примере мы используем keyof typeof obj для получения типа всех возможных ключей объекта obj. Затем мы используем этот тип в качестве аргумента key в функции doSomething.

При вызове функции doSomething мы можем передать любой допустимый ключ объекта obj:

doSomething('key1'); // valid
doSomething('key2'); // valid
doSomething('key3'); // valid
doSomething('key4'); // invalid - ключ 'key4' отсутствует в объекте obj

Использование типа ключа объекта в аргументе функции позволяет нам обеспечить типовую безопасность, чтобы TypeScript проверял, что переданный ключ является действительным ключом объекта obj. Таким образом, мы можем избежать ошибок, связанных с передачей недопустимых ключей.