Я пытаюсь написать правило tslint, чтобы гарантировать, что все использования конструктора класса из одного пути допускают необязательный параметр, а использование из другого пути требует передачи этого параметра, даже если он определен как необязательный.
Мой пример: общий класс модели A, который должен быть инициализирован без необязательного параметра ctx из path1 и должен выдавать предупреждение tslint, если инициализирован из path2.
Возможно ли это даже с tslint?
class Context {
req: Request;
constructor(req: Request) {
this.req = req;
}
doSomething() { }
}
/*
* path of file /src/shared/model/
*/
export class A {
names: string[];
constructor(data: any, ctx?: Context) {
this.names = data.names;
ctx?.doSomething();
}
}
/*
* path of file /src/path1/
*/
const allowOptionalCtx = () => {
new A({names: ['tim']});
}
/*
* path of file /src/path2/
*/
const shouldRequireCtx = () => {
new A({names: ['tim']});
}
/*
* path of file /src/path2/
*/
const okIfWithCtx = (r: Request) => {
new A({names: ['tim']}, new Context(r));
}