Обеспечить соблюдение границ ключа в индексе - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь использовать функцию, которая принимает индекс в качестве параметра, ключ которого ограничен ключом T

function aliasSet<T>(values: {[x:keyof T]:string})
//compiler error: An index signature parameter type must be 'string' or 'number'

Есть ли способ достичь этого?Это правильный подход?

1 Ответ

2 голосов
/ 23 мая 2019

Параметры подписи индекса могут быть только number или string (даже не number | string)

Вы ищете сопоставленные типы, особенно для сопоставленного типа Record:

function aliasSet<T>(values: Record<keyof T, string>)

Пример:

declare function aliasSet<T>(values: Record<keyof T, string>) : void;
interface O {
    foo: number,
    bar?: boolean
}

aliasSet<O>({
    bar: "", // Record erases optionality, if you want all to be optional you can use Partial<Record<keyof T, string>>
    foo: ""
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...