Typescript 强制索引中键的边界

Typescript 强制索引中键的边界,typescript,generics,keyof,Typescript,Generics,Keyof,我尝试使用一个函数,它将索引作为参数,其中键被限制为T的键 function aliasSet<T>(values: {[x:keyof T]:string}) //compiler error: An index signature parameter type must be 'string' or 'number' 函数别名集(值:{[x:keyof T]:string}) //编译器错误:索引签名参数类型必须为“字符串”或“数字” 有没有办法做到这一点?这是正确的方法吗?

我尝试使用一个函数,它将索引作为参数,其中键被限制为T的键

function aliasSet<T>(values: {[x:keyof T]:string})
//compiler error: An index signature parameter type must be 'string' or 'number'
函数别名集(值:{[x:keyof T]:string})
//编译器错误:索引签名参数类型必须为“字符串”或“数字”

有没有办法做到这一点?这是正确的方法吗?

索引签名参数只能是
number
string
(甚至不能是
number | string

您正在查找映射类型,特别是
记录
映射类型:

function aliasSet<T>(values: Record<keyof T, string>)
函数别名集(值:记录)
例:

声明函数别名集(值:记录):void;
接口O{
傅:号码,
条形图?:布尔值
}
别名集({
条:“,//记录删除可选性,如果希望所有项都是可选的,则可以使用部分
傅:“
})

索引签名参数只能是
数字
字符串
(甚至不能是
数字|字符串

您正在查找映射类型,特别是
记录
映射类型:

function aliasSet<T>(values: Record<keyof T, string>)
函数别名集(值:记录)
例:

声明函数别名集(值:记录):void;
接口O{
傅:号码,
条形图?:布尔值
}
别名集({
条:“,//记录删除可选性,如果希望所有项都是可选的,则可以使用部分
傅:“
})

太好了,就是这样!我在文档中看到了这个记录,但不太确定如何使用它。谢谢你!太好了,就是这样!我在文档中看到了这个记录,但不太确定如何使用它。谢谢你!