定义一个递归类型,每个子代都实现父代的值类型

时间:2019-05-20 07:08:20

标签: typescript

这里是一个示例结构,其中每个对象中的子级与其父级共享相同的结构,并且value字段实现了父级的value字段。

const x: R<{}, { a: number, b: number }> = {
  value: { a: 1, b: 2 },
  children: [
    { value: { a: 1, b: 2 } },
    {
      value: { a: 1, b: 2, c: 3 },
      children: [
        { value: { a: 1, b: 2, c: 3, d: 4 } },
        { value: { d: 4 } }, // invalid
      ],
    },
    { value: { c: 1, d: 3 } },  // invalid
  ],
}

我正在尝试如下定义此类型:

interface R<P, T extends P = P> {
  value: T;
  children?: Array<R<T, any>>;
}

但是,此接口未能在嵌套记录中找到错误(请参见最后带有invalid注释的错误)。

Playground

0 个答案:

没有答案