Г(
https://mariusschulz.com/blog/mixin-classes-in-typescript#:~:text=Mixins%20in%20JavaScript%2FTypeScript,is%20based%20on%20composing%20behavior.
Size: a a a
Г(
SK
get, post, put, delete. В базовом классе CrudRequester у меня все эти методы реализованы, мне остается сделать так:export const userController = new CrudRequester('/api/users')
В userController у меня уже будут все методыclass UserController extends CrudRequester {
someOtherMethod() {...}
}
export const userController = new UserController('/api/users')
Если делать с разбитием на 4 интерфейса код будет такимinterface IUserController extends GetRequest, PutRequest, PostRequest, DeleteRequestИ так для каждого контроллера (эндпоинта) на беке, а у меня их очень много. Получается много повторений или я туплю?
class UserController implements IUserController {
constructor(private url: string) {};
get() {...}
post() {... }
put() {... }
delete() {...}
}
Г(
VB
Г(
TBase extends Constructor & RequestSettings
Не нравится, что нужно статическое свойство url, а иначе никак из базового класса свойство не получается достатьVB
TBase extends Constructor & RequestSettings
Не нравится, что нужно статическое свойство url, а иначе никак из базового класса свойство не получается достатьtype RequestSettings = {
url: string
}
type Constructor<T extends RequestSettings> = new (...args: any[]) => T;
function WithGet<TBase extends Constructor<RequestSettings>>(Base: TBase) {
return class extends Base {
get() { return this.url }
};
}Г(
type RequestSettings = {
url: string
}
type Constructor<T extends RequestSettings> = new (...args: any[]) => T;
function WithGet<TBase extends Constructor<RequestSettings>>(Base: TBase) {
return class extends Base {
get() { return this.url }
};
}VB
Г(
АК
VS
IK
VS
c
c
VS
IK
IK
O
IK