【问题标题】:Typescript - Interfaces or classes for domain objects and DTO in Clean architecture?Typescript - Clean 架构中域对象和 DTO 的接口或类?
【发布时间】:2021-03-30 13:01:19
【问题描述】:

我没有太多使用 Typescript 的经验,也没有用它实现架构模式,但我们正在从事一个我们想使用 Clean Architecture 的项目,但我怀疑使用 classinterface 声明 DTO和域对象。

我的假设是,对于Domain Objects,将其命名为class 是个好主意,因为它们内部可以包含业务逻辑。示例:

export class Person {
  id: string;
  firstName: string;
  lastName: string;
  title: string;

  constructor() {}
  
  someBusinessLogic() {
    // Implement some business logic
  }

但是对于DTO,由于他们不应该有任何逻辑,我正在与interface合作:

export interface PersonEntityDto {
  id: string;
  firstName: string;
  lastName: string;
  title: string;
  updatedAt: string;
  createdAt: string;
}

我说的对吗?

【问题讨论】:

    标签: typescript domain-driven-design clean-architecture hexagonal-architecture


    【解决方案1】:

    是的,你的假设是正确的。 但是“官方”规则并没有拒绝为域对象使用接口,在某些情况下接口很有用。 我的建议是,如果你使用接口,你应该尊重 Liskov 原则。

    【讨论】:

      猜你喜欢
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 2020-05-22
      • 2023-04-02
      • 2021-06-29
      • 2011-02-10
      • 1970-01-01
      相关资源
      最近更新 更多