gpt4 book ai didi

javascript - Angular2 模型类中的方法格式

转载 作者:太空狗 更新时间:2023-10-29 18:26:30 24 4
gpt4 key购买 nike

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

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

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

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

...当我编译时出现以下错误:

Type '{ name: string }' is not assignable to type 'catModel'. Property 'getName' is missing in type '{ name: string }'

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

最佳答案

这是因为 Typescript 使用了一个 structural type system .如 TypeScript docs: Type Compatibility 中所述

The basic rule for TypeScript’s structural type system is that x is compatible with y if y has at least the same members as x

“相同成员”是指属性方法。如果你考虑这个推理,它是完全有道理的。通过键入 CarModel 形式的内容,您可以向使用它的任何人保证它的行为与 CarModel 类似。如果您的对象字面量中没有 getName,那么它不能CarModel,因为它不遵循契约(Contract)。

阅读上面的第二个链接。这是一份很棒的引用文档。


可能不是您帖子中的主要关注点,但显而易见的解决方案是构造类 new CarModel('simba') 的实例。

关于javascript - Angular2 模型类中的方法格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39433286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com