TypeScript: как я могу явно передать тип дженерикам для этой функции - PullRequest
0 голосов
/ 07 августа 2020

Я изучаю 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

1 Ответ

1 голос
/ 07 августа 2020

Предполагая, что вы действительно хотите явно передать тип, я не думаю, что использование extends разрешено при вызове функции.

getValues<typeof obj, keyof typeof obj>(obj, ['a'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...