npmtypescript95% confidence\u2191 573

How to suppress "error TS2533: Object is possibly 'null' or 'undefined'"?

Full error message
I have a type:

type tSelectProtected = {
  handleSelector?: string,
  data?: tSelectDataItem[],

  wrapperEle?: HTMLElement,
  inputEle?: HTMLElement,
  listEle?: HTMLElement,
  resultEle?: HTMLElement,

  maxVisibleListItems?: number
}

I declare a global module-wise variable:

var $protected : tSelectProtected = {};

I'm assigning proper value in function1() scope:

$protected.listEle = document.createElement('DIV');

Later in function2() scope, I'm calling:

$protected.listEle.classList.add('visible');

I'm getting TypeScript error:

error TS2533: Object is possibly 'null' or 'undefined'

I know that I can do explicit check using if ($protected.listEle) {$protected.listEle} to calm down compiler but this seems to be very unhandy for most non trivial cases.

How this situation can or should be handled without disabling TS compiler checks?

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!

API access

Get this solution programmatically \u2014 free, no authentication.

curl https://depscope.dev/api/error/9539a606342e02755e09de5f04633439fc96662bf1c68dc16bb1fe6a04dc14b8
hash \u00b7 9539a606342e02755e09de5f04633439fc96662bf1c68dc16bb1fe6a04dc14b8
How to suppress "error TS2533: Object is possibly '… — DepScope fix | DepScope