Параметры подписи индекса могут быть только 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: ""
})