自引用打字稿类

时间:2016-03-07 15:52:35

标签: angularjs typescript angular self-reference

我有一个JSON对象,我想在angular2 typescript类中表示。 JSON对象中包含一个自己类型的对象数组。 JSON对象如下所示:

{ 
  "data": {
     "id": 5
     "type": "taxons",
     "attributes": {
       name: "Vehicles & Vehicle Accessories",
       "taxons": [{
         "id": 8,
         "type": "taxons",
         "attributes": {
            name: "Make",
            "taxons": []
         },
         "id": 9,
         "type": "taxons",
         "attributes": {
            name: "Model",
           "taxons": []
         }
        }]
  }
}

当我在打字稿中创建taxon模型时,我会陷入如何在taxon数组中表示自引用taxons的问题。 我目前有这样的课程。

export class Taxon {
  constructor (
    public id: number,
    public name: string,
    public taxons: //I am stuck here.
    )
}

如何引用self以便我可以使用

public taxons: Array<self>

或者我怎么做才能得到预期的行为。

2 个答案:

答案 0 :(得分:2)

我建议通过这样的界面来做这件事:

interface IFoo {
    id: number;
    name: string;
    foos?: IFoo[];
}

var foo: IFoo = {
    id: 1,
    name: 'name 1',
    foos: [
        {id: 2, name: 'child 2'}
    ]
}

关键是使用foos

使?属性可选

答案 1 :(得分:0)

如果你真的需要,你也可以使用一个类。 您所要做的就是指定类型。

$('#fullpage').fullpage({
    sectionsColor: ['yellow', 'orange', '#C0C0C0', '#ADD8E6'],
    afterLoad: function(anchorLink, index){
        var activeElement;
        if(index === 1){
           activeElement = $('#element1');
        }
        else if(index === 2 || index ===3){
           activeElement = $('#element2');
        }else if( index === 4){
            activeElement = $('#element3');
        }

        activeElement.addClass('active').siblings().removeClass('active');
    }
});