簡體   English   中英

Angular2模型類中的方法格式

[英]Method format within Angular2 model class

我有一個基本的模型類(不是組件):

export class catModel { 
 constructor(public name: string) { }
 getName: string {
  return this.name.toUpperCase();
 }
}

現在我將嘗試在這樣的組件中使用此模型:

feline: catModel = {name: 'simba' };

...當我編譯時,我收到以下錯誤:

類型'{name:string}'不能分配給'catModel'類型。 “{name:string}”類型中缺少屬性“getName”

只要從catModel中刪除getName函數就可以正常工作,為什么不讓它添加方法呢?

這是因為Typescript使用結構類型系統 TypeScript文檔中所述:類型兼容性

為打字稿的結構類型系統中的基本規則是, x是兼容y如果y具有至少相同的部件x

“相同成員”是指屬性方法。 如果你考慮這個推理,那就很有意義了。 通過輸入CarModel ,您可以向任何使用它的人保證它的行為就像CarModel 如果你的對象文字中沒有getName ,那么它不能CarModel ,因為它不遵循契約。

閱讀上面的第二個鏈接。 這是一篇很棒的參考文獻。


可能不是你帖子中主要關注的內容,但顯而易見的解決方案是構建一個new CarModel('simba')new CarModel('simba')的實例。

這應該可以解決你的問題,

export class catModel { 

  name:string;    //<-----here

  constructor(public name: string) { }

  getName: string {
    return this.name.toUpperCase();
  }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM