我在这里和这里查看了类似的问题,到目前为止还 没有帮助解决我的问题。如果存在我无法提取的重叠部分,我们深表歉意。
我很难解释我的问题,所以这是我最好的尝试。
我需要使用泛型在特定键处提取对象值的类型...
我将尝试设置一个展示我的问题的最小示例。
我有一个通用类型
export type Column<T> = {
title: string
prop: keyof T
render?: (val: any /* needs to be type of T[prop] */, item: T) => any
}
我render
在该泛型类型上有一个函数,它使用两个参数调用:提供的属性处的对象的值prop
,以及完整的对象。现在,我将val
ue 键入为 any,但如果可以推断出来,我会喜欢它,因为我们将 ueprop
声明为keyof T
. 所以我需要val
成为T
at 属性的值,prop
它恰好是 a keyof T
。
例子:
type Car = {
model: string
passengerCount: number
}
const columns: Column<Car>[] = [{
title: 'Model',
prop: 'model', // type aware as keyof T (keyof Car),
render: (val: any /* I want this to be type aware as a string */, item: Car): string => (
`Model: ${val}` // arbitrary for example purposes
)
}, {
title: 'Number of passengers',
prop: 'passengerCount', // type aware as keyof T (keyof Car),
render: (val: any /* want this to be type aware as a number */, item: Car): string => (
`${val} passengers` // arbitrary for example purposes
)
}]
希望这是一个很好的例子。基本上,如果函数的第一个参数是类型感知的,我会喜欢它render
,因为我们将对象的属性作为prop
.
这可能吗?