1

我在这里和这里查看了类似的问题到目前为止 没有帮助解决我的问题。如果存在我无法提取的重叠部分,我们深表歉意。

我很难解释我的问题,所以这是我最好的尝试。

我需要使用泛型在特定键处提取对象值的类型...

我将尝试设置一个展示我的问题的最小示例。

我有一个通用类型

export type Column<T> = {
  title: string
  prop: keyof T
  render?: (val: any /* needs to be type of T[prop] */, item: T) => any
}

render在该泛型类型上有一个函数,它使用两个参数调用:提供的属性处的对象的值prop,以及完整的对象。现在,我将value 键入为 any,但如果可以推断出来,我会喜欢它,因为我们将 ueprop声明为keyof T. 所以我需要val成为Tat 属性的值,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.

这可能吗?

4

0 回答 0