Ho un type
:
type tSelectProtected = {
handleSelector?: string,
data?: tSelectDataItem[],
wrapperEle?: HTMLElement,
inputEle?: HTMLElement,
listEle?: HTMLElement,
resultEle?: HTMLElement,
maxVisibleListItems?: number
}
Dichiaro una variabile globale a livello di modulo:
var $protected : tSelectProtected = {};
Sto assegnando il valore corretto function1()
nell'ambito:
$protected.listEle = document.createElement('DIV');
Più tardi function2()
nell'ambito, sto chiamando:
$protected.listEle.classList.add('visible');
Ricevo l'errore TypeScript:
error TS2533: Object is possibly 'null' or 'undefined'
So che posso fare un controllo esplicito usando if ($protected.listEle) {$protected.listEle}
per calmare il compilatore, ma questo sembra essere molto sfortunato per la maggior parte dei casi non banali.
Come può o deve essere gestita questa situazione senza disabilitare i controlli del compilatore TS?
null
s in JavaScript "vanilla" per inizializzare variabili o valori di proprietà. Questo mi dà una risposta chiara se esiste var o prop dato ma non ha ancora "nessun valore utilizzabile" o "il valore è stato cancellato in qualche punto di esecuzione". È solo per convenzione. Questo potrebbe non essere il miglior approccio in TypeScript, come posso vedere dalle risposte qui. Grazie per i tuoi pensieri