我有一个类,在开发人员调用a()之前,是否可能有一个eslint规则来检查b()是否被调用?
class A {
a(){return this}
b(){return this}
}
const c= new A();
c.a() // warning: b() has to be called before a()
c.b().a() // no eslint warning发布于 2019-10-23 17:53:07
如果您只希望允许链,则可以通过类型记录强制执行此操作。
基本上,使用类型记录,您可以这样键入它:
interface FullA {
a(): FullA;
b(): FullA;
}
interface ABeforeB {
b(): FullA;
}只需将类键入为ABeforeA而不是FullA。
但是,如果您希望允许这样做:
c.b();
c.a();没有办法在编译时检查这一点。在a()之前是否调用b()的唯一方法是执行程序。
下面是这样的一个简短的例子:假设这个程序:
const c = new A();
if(Math.random() > .5) {
c.b();
}
c.a();在这种情况下,在50%的情况下,你会有错误,在50%的情况下,它将工作良好。if子句可能是任意复杂的。
发布于 2019-10-23 17:15:45
模块是一个npm包,通常收费规则。另外,一些模块还发送了至少一个命名的安排。确保将捆绑包引入到ESLint可能需要的目录中。
https://stackoverflow.com/questions/58527904
复制相似问题