The point of declaring an optional property or parameter is to make explicit the fact that it might contain no valid value, i.e. null or undefined. Using a non-null assertion (the !. operator) will lead to a runtime error if the optional does contain null or undefined. Even if the value is tested first, it's still considered a bad practice to use a non-null assertion.

Noncompliant Code Example

function doTheThing(foo?: Foo) {
  let s = foo!.bar;  // Noncompliant
}

Compliant Solution

function doTheThing(foo?: Foo) {
  if (foo) {
    let s = foo.bar;
  }
}