Angular2模型类中的方法格式

时间:2016-09-11 05:57:32

标签: javascript class angular typescript

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

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

现在我尝试在这样的组件中使用此模型:

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

...当我编译时,我收到以下错误:

  

输入' {name:string}'不能分配给类型' catModel'。财产' getName'类型' {name:string}'

中缺少

只要从catModel中删除getName函数就可以正常工作,为什么它不允许我添加方法?

2 个答案:

答案 0 :(得分:3)

因为Typescript使用structural type system。如TypeScript docs: Type Compatibility

中所述
  

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

&#34;同样的成员&#34;表示属性方法。如果你考虑这个推理,那就很有意义了。通过键入CarModel的内容,您可以向使用它的任何人保证它的行为类似于CarModel。如果您的对象文字中没有getName,那么它就不能<{1}},因为它不会跟随合同。

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

可能不是你帖子中主要关注的内容,但显而易见的解决方案是构建类CarModel的实例。

答案 1 :(得分:0)

这可以解决您的问题,

export class catModel { 

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

  constructor(public name: string) { }

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

}