我在 Angular 应用程序中遇到 Typescript 编译错误。以下是示例代码和错误消息。
请您指导我抑制这个错误。我认为根据 Javascript 这段代码是正确的。
- error TS2611: 'foo' is defined as a property in class 'A', but is overridden here in 'B' as an accessor.
export class A {
foo: string;
}
export class B extends A {
f1;
set foo(name) {
this.f1 = name;
}
get foo() {
return this.f1;
}
}
编者注:在评论中发现这两个类A
and B
在第三方库中。
错误消息是正确的,因为这里有一个微妙的错误。当您在父类中定义属性时,该属性就会被创建自动地对于它的每一个子类。
那么,在您编写的代码中,您是否not为B类编写:set/get foo(name) { ... }
班级本来会有foo
财产anyway由于该财产是在B
的父类 -A
.
在你的代码中你实际上是在破坏foo
声明的财产A
与访问器声明。
如果你想要求所有子类A
来声明他们的own foo
属性(类似于接口),然后尝试:
export class A {
abstract foo: string;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)