我有一个基本的模型类(不是组件):
export class catModel {
constructor(public name: string) { }
getName: string {
return this.name.toUpperCase();
}
}
现在,我将尝试在这样的组件中使用此模型:
feline: catModel = {name: 'simba' };
...当我编译时,出现以下错误:
一旦从catModel中删除getName函数,它就可以正常工作,为什么不让我添加一个方法呢?
最佳答案
这是因为Typescript使用了structural type system。如TypeScript docs: Type Compatibility中所述
“相同成员”是指属性和方法。如果您考虑这种推理,那将是非常合理的。通过将某些内容键入为CarModel
,您可以保证使用它的任何人都将其行为类似于CarModel
。如果您的对象字面量中没有getName
,那么它就不能是CarModel
,因为它没有遵守契约(Contract)。
阅读上面的第二个链接。这是一个很棒的引用文件。
可能不是您的帖子中主要关注的内容,但是显而易见的解决方案是仅构造new CarModel('simba')
类的实例。