How to suppress "error TS2533: Object is possibly 'null' or 'undefined'"?
Solution 1:
If you know from external means that an expression is not null
or undefined
, you can use the non-null assertion operator !
to coerce away those types:
// Error, some.expr may be null or undefined
let x = some.expr.thing;
// OK
let y = some.expr!.thing;
Solution 2:
This feature is called "strict null checks", to turn it off ensure that the --strictNullChecks
compiler flag is not set.
However, the existence of null
has been described as The Billion Dollar Mistake, so it is exciting to see languages such as TypeScript introducing a fix. I'd strongly recommend keeping it turned on.
One way to fix this is to ensure that the values are never null
or undefined
, for example by initialising them up front:
interface SelectProtected {
readonly wrapperElement: HTMLDivElement;
readonly inputElement: HTMLInputElement;
}
const selectProtected: SelectProtected = {
wrapperElement: document.createElement("div"),
inputElement: document.createElement("input")
};
See Ryan Cavanaugh's answer for an alternative option, though!