我正在尝试编写tslint规则,以确保从一个路径使用的类构造函数的所有用法都允许一个可选参数,而从另一路径使用的该类构造函数要求即使该参数被定义为可选参数,也要传递该参数。
我的例子: 共享模型类A,应该允许在没有来自path1的可选ctx参数的情况下进行初始化,并且如果从path2进行初始化,则应该发出tslint警告。
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));
}