繁体   English   中英

如何在类模型内部声明类型?

[英]How to declare a type inside class model?

我是angular2的新手。 所以,请忍受我。

到目前为止我尝试过的是:

export class Navbar {
  name: string;
  submenu: {
    name: string;
  }
}

再说一次:我尝试了数组和[]

export class Navbar {
  name: string;
  submenu: array;
}

这是没有子菜单声明的代码。

export class Navbar {
  name: string;
}

const NAVBAR: Navbar[] = [
  { name: 'Company Data' },
  { name: 'Client Data', 
    submenu: [
      { name: 'Balance' },
      { name: 'Settlement' }
    ]
  },
  { name: 'Bookie Data' },
  { name: 'Bank Data' },
  { name: 'Journal Entry' },
  { name: 'Journal Bank' },
  { name: 'Report', 
    submenu: [
      { name: 'General Ledger' },
      { name: 'Trial Balance' },
      { name: 'Profit/Loss' },
      { name: 'Balance Sheet' }
    ]
  },
  { name: 'Control' },
  { name: 'Input', 
    submenu: [
      { name: 'Company' },
      { name: 'Client' },
      { name: 'Bookie' },
      { name: 'Master' },
      { name: 'Client Agent' },
      { name: 'Bookie Balance' },
      { name: 'Import Client Data' },
      { name: 'Chart Of Account' },
      { name: 'Bank' },
      { name: 'Bank Company' }
    ]
  }
]

这是角度引发的误差。

app/app.component.ts(10,5): error TS2322: Type '({ name: string; } | { name: string; submenu: { name: string; }[]; })[]' is not assignable to type 'Navbar[]'.
  Type '{ name: string; } | { name: string; submenu: { name: string; }[]; }' is not assignable to type 'Navbar'.
    Type '{ name: string; submenu: { name: string; }[]; }' is not assignable to type 'Navbar'.
      Object literal may only specify known properties, and 'submenu' does not exist in type 'Navbar'.

任何帮助对我来说意义非凡。 谢谢!

有几件事您将需要更改...首先,我建议您使用interfacetype而不是class因为您不会在任何地方调用new

另一件事是,通过具有submenu: array它不是可选的,因此在每个实例上都不会出现这种情况(树需要停在某处)。 您可以使用?来表示?

这将为您提供如下界面:

export interface Navbar {
  name: string;
  submenus?: Navbar[];
}

这将使它起作用:

const navbars: Navbar[] = [
  { name: 'Company Data' },
  { name: 'Client Data', 
    submenus: [
      { name: 'Balance' },
      { name: 'Settlement' }
    ]
  }
];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM