Typescript - Clean 架构中域对象和 DTO 的接口或类?

问题描述

我对 Typescript 没有太多经验,也没有用它实现架构模式,但我们正在一个项目中工作,我们想使用 Clean Architecture 但我怀疑使用 class 或 {{1} } 用于声明 DTO 和 Domain 对象。

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

class

但是对于export class Person { id: string; firstName: string; lastName: string; title: string; constructor() {} someBusinessLogic() { // Implement some business logic } ,因为它们不应该有任何逻辑,所以我正在使用DTO

interface

我说得对吗?

解决方法

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