缺少打字稿中类和接口之间的理解

时间:2018-09-21 08:42:19

标签: angular typescript oop

我知道我们应该在打字稿中的接口上使用implements,并且在类中使用extends。但是我面对的是在本教程https://angular.io/tutorial/toh-pt2中实现类的摘要代码impelent,我的问题是我们可以实现类吗?

1 个答案:

答案 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
     }
}