【发布时间】:2020-09-07 05:46:36
【问题描述】:
我希望实现 Observer 接口的类也实现 Comparable 接口,我该怎么做?
interface Comparable<T> {
equals: (item: T) => boolean;
}
interface Observer extends Comparable<Observer> {
notify: () => void
}
class TestA implements Observer {
private name = '';
equals = (item: TestA) => {
return this.name === item.name
}
notify = () => {}
}
class TestB implements Observer {
private name = '';
equals = (item: TestB) => {
return this.name === item.name
}
notify = () => {}
}
错误:
TS2416:类型“TestA”中的属性“等于”不能分配给基本类型“观察者”中的相同属性。类型 '(item: TestA) => boolean' 不可分配给类型 '(item: Observer) => boolean'。参数“item”和“item”的类型不兼容。 “观察者”类型中缺少属性“名称”,但在“TestA”类型中是必需的。
但是,TestA实现了Observer接口,为什么不兼容呢?
当然,我可以这样写:
class TestA implements Observer {
private name = '';
equals = (item: Observer) => {
return this.name === item.name
}
notify = () => {}
}
然后我得到这样一个错误,此外,这并不完全正确,因为我只想比较这个类的对象:
“观察者”类型上不存在属性“名称”。
怎么做才对? “打字稿”:“^3.9.2”
【问题讨论】:
标签: javascript typescript