Правило Tslint для проверки необязательного свойства - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь написать правило 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));
}
...