class 什么时候应该实现接口?

When should a class implement an interface?

在一个项目上工作,看到开发人员在 typescript 中执行以下操作。

    export class Ledger implements ILedger {
      LedgerID: number;
      CashAmmount: number;
      Units: number;

      public static someFunction {
        // an ajax call for example to a controller
      }
    }

    export interface ILedger {
       LedgerID: number;
       CashAmmount: number;
       Units: number;
     }

想知道这样做是否正确。如果 class 中没有实现,这似乎毫无意义。然后在我们的 React 组件中有对接口的引用,有时是 class。想要开始设置一些约定,但需要一些帮助以了解在这种情况下正确的做法是什么?

It seems pointless if there is no implementation in the class.

我同意。那样的话就没必要了。但有有效案例

依赖注入

类似于:https://github.com/inversify/InversifyJS

符合外部 API

有人要 IFoo。您想在 IFoo 的代码库中使用 class。有一个 class 扩展它,这样你就知道 class 总是跟在那个外部 IFoo 之后。