Using non-null assertions cancels the benefits of the strict null-checking mode.
Examples of incorrect code for this rule:
interface Foo {
bar?: string;
}
const foo: Foo = getFoo();
const includesBaz: boolean = foo.bar!.includes("baz");
Examples of correct code for this rule:
interface Foo {
bar?: string;
}
const foo: Foo = getFoo();
const includesBaz: boolean = foo.bar && foo.bar.includes("baz");
If you don't care about strict null-checking, then you will not need this rule.