强制使用链式可选表达式,而不是链式逻辑与、否定逻辑或、或空对象。
规则配置
// code-linter.json5
{
"rules": {
"@typescript-eslint/prefer-optional-chain": "error"
}
} 正例
class Foo {
public a?: Foo = new Foo();
public b?: Foo = new Foo();
public c?: Foo = new Foo();
public method?(): void {
console.info('method');
}
}
const foo = new Foo();
export const c = foo.a?.b?.c;
foo.a?.b?.method?.(); 反例
class Foo {
public a?: Foo = new Foo();
public b?: Foo = new Foo();
public c?: Foo = new Foo();
public method?(): void {
console.info('method');
}
}
const foo = new Foo();
let c = foo.a;
c = c && c.b;
c = c && c.c;
export { c };
if (foo.a && foo.a.b && foo.a.b.method) {
foo.a.b.method();
}