If variable is optional, which means it can also equal undefined, exclamation mark at the end tells compiler that it can be sure the value will always keep some non-undefineed value.
type RandomType = { optionalValue?: string } const rt: RandomType = {optionalValue: "random"}; rt.optionalValue.length // 'rt.optionalValue' is possibly 'undefined'. rt.optionalValue!.length // no error thrown.
In the above example usage of ! is save, because we can be certain that value of optionalValue is always different than undefined.
This operator should be used carefully, because if your value would equal undefined, code is at risk of Cannot read properties of undefined error.
type RandomType = { optionalValue?: string } const rt: RandomType = {}; rt.optionalValue!.length // Cannot read properties of undefined (reading 'length')

