[英]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.