Я изучаю TypeScript и пытался использовать сопоставленные типы для написания функции, которая позволяет пользователям извлекать значения из объекта только тогда, когда ключи действительно существуют в объекте. Вот код
const obj = {
a: 1,
b: 2,
c: 3
}
function getValues<T, K extends keyof T>(obj: T, keys: K[]) {
return keys.map(key => obj[key])
}
getValues(obj, ['a', 'b'])
Итак, здесь я определил два параметра типа T
и K
, и они выводятся компилятором TS, потому что, когда я вызвал функцию, я явно не передавал типы .
Теперь мой вопрос: что, если я хочу явно передать типы в функцию, как мне переписать функцию? Я хочу сделать это, потому что мне интересно, как здесь работает вывод типов
, так что это моя попытка
getValues<typeof obj, string[] extends keyof typeof obj>(obj, ['a'])
Однако компилятор недоволен. Ошибка разбора Parsing error: '?' expected