我希望有一个泛型类型以在某些函数中将其用作参数,但尚不清楚如何定义具有强类型属性名称的属性(示例代码片段中的specificProperties)。
type Config<T> = {
specificProperties: keyof T[],
data: T[],
}
function doSomething<T>(config: Config<T>) {
// Some logic here
}
用法:
type Test = {
code: string,
name: string,
}
const config: Config<Test> = {
specificProperties: [ 'code' ], //Typescript error here
data: [
{
code: 'a',
name: 'b'
}
]
}
doSomething(config)
Typescript 抛出错误:属性“specificProperties”的类型不兼容。类型 'string[]' 不能分配给类型 'keyof T[]'。
似乎配置类型应该是固定的,但我不知道该怎么做。有任何想法吗?
更改keyof T[]
为(keyof T)[]
。括号的优先级高于keyof
运算符。
type Config<T> = {
specificProperties: (keyof T)[],
data: T[],
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句