Javascript Angular2模型类中的方法格式

Javascript Angular2模型类中的方法格式,javascript,class,angular,typescript,Javascript,Class,Angular,Typescript,我有一个基本模型类(不是组件): 现在,我将尝试在如下组件中使用此模型: feline: catModel = {name: 'simba' }; …编译时出现以下错误: 类型“{name:string}”不可分配给类型“catModel”。类型“{name:string}”中缺少属性“getName” 一旦从catModel中删除getName函数,它就可以正常工作,为什么不让我添加一个方法?这应该可以解决您的问题 export class catModel { name:strin

我有一个基本模型类(不是组件):

现在,我将尝试在如下组件中使用此模型:

feline: catModel = {name: 'simba' };
…编译时出现以下错误:

类型“{name:string}”不可分配给类型“catModel”。类型“{name:string}”中缺少属性“getName”


一旦从catModel中删除getName函数,它就可以正常工作,为什么不让我添加一个方法?

这应该可以解决您的问题

export class catModel { 

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

  constructor(public name: string) { }

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

}
导出类catModel{

name:string;//这是因为Typescript使用了

TypeScript结构类型系统的基本规则是,如果
y
至少具有与
x
相同的成员,则
x
y
兼容

“相同的成员”表示属性和方法。如果您考虑一下这个推理,它就非常有意义。通过键入
CarModel
,您可以向任何使用它的人保证它的行为将类似于
CarModel
。如果您的对象文字中没有
getName
,那么它就不能像它那样是
CarModel
我不遵守合同

阅读上面的第二个链接。这是一个很好的参考文件


可能不是你文章中主要关注的问题,但显而易见的解决方案是只构建一个类的实例
newcarmodel('simba')

export class catModel { 

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

  constructor(public name: string) { }

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

}