Typescript代码的摘要和实现架构

Typescript代码的摘要和实现架构,typescript,ecmascript-6,Typescript,Ecmascript 6,我知道这可能是错误的,但我仍然需要你的帮助。谢谢 请问,关于代码的抽象和实现架构,您能说些什么 我需要一些想法。谢谢 export interface IDataService<T> { getAll(): Promise<DocumentType<T>[]>; } export interface IServiceRequestService extends IDataService<IServiceRequest> { } exp

我知道这可能是错误的,但我仍然需要你的帮助。谢谢

请问,关于代码的抽象和实现架构,您能说些什么

我需要一些想法。谢谢

export interface IDataService<T> {
    getAll(): Promise<DocumentType<T>[]>;
}

export interface IServiceRequestService extends IDataService<IServiceRequest> {

}

export class ServiveRequestService implements IServiceRequestService {
    private readonly ServiveRequestModel: DistanceModelType

    constructor() {
        this.ServiveRequestModel = getModelForClass(ServiveRequest);
    }

    public getAll(): Promise<DocumentType<IServiceRequest>[] {
        return this.ServiveRequestModel.find();
        
    }
}
导出接口IDataService{
getAll():承诺;
}
导出接口IServiceRequestService扩展了IDataService{
}
导出类ServiceRequestService实现IServiceRequestService{
私有只读服务请求模型:DistanceModelType
构造函数(){
this.ServiveRequestModel=getModelForClass(ServiveRequest);
}

公共getAll():Promise
服务请求服务
是一个
,意味着您可以通过调用
新建
来创建它的许多实例。这些实例之间有什么区别?没有区别,这表明
服务请求服务
应该是其他类的实例,而不是它自己的类

我们可以创建一个通用类
DataService
,将特定模型作为其构造函数中的参数(“依赖项注入”)。这样就不需要依赖外部
getModelForClass
函数。一般来说,类应该封装自己的逻辑,因此依赖外部方法不是一个好的设计

export interface IDataService<T> {
  getAll(): Promise<DocumentType<T>[]>;
}

export class DataService<T> implements IDataService<T> {
  private readonly model: Model<T>;

  constructor(model: Model<T>) {
    this.model = model;
  }

  public getAll(): Promise<DocumentType<T>[]> {
    return this.model.find();
  }
}
如果
serviceverequestmodel
具有正确的类型(
Model
),则将自动推断泛型
T
,并且
all
将具有类型
Promise


等等,有什么问题吗?请考虑遵循指南。现在我不知道你在找什么。你好@ JCalz。我只需要对代码进行一个抽象的解释。我不知道什么是“抽象的解释”。是的,如果没有任何上下文或上下文,很难开始理解代码是关于什么的。我不知道这里是否有语言障碍(你英语流利吗?)但是我仍然不知道这里发生了什么,所以我想我帮不了你。我不知道你在问什么。但是这个类依赖于一些外部函数
getModelForClass
,这似乎不是一个很好的设计。你可能希望这个服务是一个更通用的服务的实例,而不是一个类。我可以编写一个回答我认为代码应该是什么样子。但我不知道问题是什么?
const ServiveRequestService = new DataService(ServiveRequestModel);

const all = ServiveRequestService.getAll();