我正在尝试使用一个将索引作为参数的函数,其中键限制为 T 的键
function aliasSet<T>(values: {[x:keyof T]:string})
//compiler error: An index signature parameter type must be 'string' or 'number'
有没有办法做到这一点?这是正确的方法吗?
我正在尝试使用一个将索引作为参数的函数,其中键限制为 T 的键
function aliasSet<T>(values: {[x:keyof T]:string})
//compiler error: An index signature parameter type must be 'string' or 'number'
有没有办法做到这一点?这是正确的方法吗?
索引签名参数只能是number
or 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: ""
})