| In Typescript I've started doing interface IHasSaveProject { saveProject(...): ...
}class HasSaveProject implements IHasSaveProject { saveProject(...): {...}
}class Controller { constructor(private readonly IHasSaveProject) {}
post(...) {
this
.hasSaveProject
.saveProject(...)
}
}And basically have a different class for every function In cases where it really makes sense to have multiple methods on a single class, I do this interface IProjectService extends IProjectService.IHasGetProject ,IProjectService.IHasGetProject {} namespace IProjectService { export interface IHasGetProject {
getProject(...): ...
}
export interface IHasSaveProject {
saveProject(...): ...
}
}class ProjectService implements IProjectService { getProject(...): {...}
saveProject(...): {...}
}class Controller { constructor(private readonly projectService: IProjectService) {}
// or
// constructor(private readonly projectService:
// IProjectService.IHasGetProject
// & IProjectService.IHasaveProject) {}
// or
// constructor(
// private readonly hasSaveProject: IProjectSercice.IHasSaveProject
// private readonly hasGetProject: IProjectSercice.IHasGetProject
// ) {}
...
}Seems to be working well for me. Lots of flexibility. Not sure how others like it though. Please forgive my formatting |