簡體   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