接口内的接口打字稿

时间:2018-09-10 15:09:18

标签: angular typescript

我是angular的新手,我试图通过接口类产生一些结果。

export interface Header {
   parentTitles: string;
   childHeaders: ChildHeader[];
   titleIcon: string;
   url: string;
  }

export interface ChildHeader {
   childTitles: string;
   siblingHeaders: SiblingHeader[];
   icon: string;
   url: string;
 }


export interface SiblingHeader {
  siblingTitles: string[];
  icon: string;
  url: string;

}

在comp.ts文件上

 headers: Header = [
   {
  parentTitles: 'Settings',
  childHeaders: ChildHeader = [{
    childTitles: 'General Setup',
    siblingHeaders: SiblingHeader = [{
      siblingTitles: ['Vessel', 'Port', 'Owner', 'Engine Type', 
    'Vessel Type'],
      icon: '',
      url: ''
    }],
    icon: '',
    url: 'home/general-setup'
      }]
   }

  ];

因此未定义ChildHeader和SiblingHeader,如何解决此问题!。

谢谢!

1 个答案:

答案 0 :(得分:1)

创建对象实例时,语法为propertName: value。您不能将类型用作值。您得到的错误是,例如SiblingHeader被用作值,但它不是值,而是一种类型。

但是,由于您已经拥有header: Header,因此您已经将header对象声明为标头,这意味着它的childHeaders属性已经是ChildHeader的数组,它们本身是具有siblingHeaders属性的对象数组,是SiblingHeader的数组。也就是说,您不需要属性在对象文字中具有类型,因为它们是从对象本身的类型派生的。

const headers: Header[] = [{
  parentTitles: 'Settings',
  childHeaders: [{
    childTitles: 'General Setup',
    siblingHeaders: [{
      siblingTitles: ['Vessel', 'Port', 'Owner', 'Engine Type',  'Vessel Type'],
      icon: '',
      url: ''
    }],
    icon: '',
    url: 'home/general-setup'
  }]
}];