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

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')类的实例。

08-03 16:34