在typescript

时间:2017-11-08 08:54:05

标签: angular typescript ecmascript-6 nested

这是我需要的数据结构

this.nodes=[
    {
      id: 1,
      name: 'root1',
      children: [
        { id: 2, name: 'child1' },
        { id: 3, name: 'child2' }
      ]
    },
    {
      id: 4,
      name: 'root2',
      children: [
        { id: 5, name: 'child2.1' },
        {
          id: 6,
          name: 'child2.2',
          children:[
            {id:7, name:'child2.2.1'}
          ]
        }
      ]
    },
  ];

对于数据类型声明,我需要编写一个类似这样的类

export class EvaluationMapperNodes {
    id: number;
    name: string;
    children: EvaluationMapperNodes[];
}

在内部使用EvaluationMapperNodes会出错。但孩子的深度是动态的。 我如何以递归方式调用其中的类。

P.S。它的Angular 2项目。

1 个答案:

答案 0 :(得分:1)

更改界面,如:

export class EvaluationMapperNodes {
  id: number;
  name: string;
  children?: EvaluationMapperNodes[];
}

因为这部分而必须得到的错误

...
children: [
    { id: 5, name: 'child2.1' },
    {...

因为它不包含children属性,所以它应该是optional,并且可以通过在属性名称之前使用?来实现,如

children?: EvaluationMapperNodes[];