我知道我们应该在打字稿中的接口上使用implements
,并且在类中使用extends
。但是我面对的是在本教程https://angular.io/tutorial/toh-pt2中实现类的摘要代码impelent,我的问题是我们可以实现类吗?
答案 0 :(得分:1)
这基本上是由于私有成员的可见性仅限于类型而不是实例的事实。
允许私有字段丢失将是一个巨大的问题,而不是一些琐碎的健全性问题。考虑以下代码:
class Identity {
private id: string = "secret agent";
public sameAs(other: Identity) {
return this.id.toLowerCase() === other.id.toLowerCase();
}
}
class MockIdentity implements Identity {
public sameAs(other: Identity) { return false; }
}
MockIdentity
是Identity的公共兼容版本,但尝试将其作为一个版本使用时会崩溃,就像非模拟副本与模拟副本交互时一样。
// Real class
class Foo {
public writeToFile(){
fileWriter.writeToFile('');
}
}
// Mock
class MockFoo implements Foo {
public writeToFile(){
// do nothing
}
}