typescript 泛型列数组显示任何回调值

bweufnob  于 12个月前  发布在  TypeScript
关注(0)|答案(1)|浏览(103)

我有这段代码来自动输入列,所以我不必在任何时候指定它,但它有一个array[]键的问题。
当突出显示render键时,它似乎显示了正确的类型,但真实的callback (value) => value.id似乎有一个any类型。

type Payload = {
  name: string;
  items: string[];
};

type Render<P> = (value: P) => any;

type Col<
  T extends object,
  K = keyof T | Array<keyof T>
> = K extends Array<keyof T>
  ? {
      key: K;
      render: Render<{ [key in K[number]]: T[key] }>
    }
  : K extends keyof T ? {
      key: K;
      render: Render<T[K]>
    } : never

const cols: Col<Payload>[] = [
  { 
    key: 'name', 
    render: (name) => name 
  },
  { 
    key: ['name', 'items'],
    render: (obj) => `${obj.name} - ${obj.items.length}`
  },
];

操场

nbysray5

nbysray51#

在这一行上没有信息可以推断obj的类型,它被推断为any

render: (obj) => `${obj.name} - ${obj.items.length}`

如果any

render: (obj: Payload) => `${obj.name} - ${obj.items.length}`

相关问题