typescript - StrictNullChecks y getElementById
typescript2.0 (2)
Con StrictNullChecks habilitado en TypeScript 2.0, el código
var el: HTMLElement = document.getElementById(''element_id'');
produce el error
Type ''HTMLElement | null'' is not assignable to type ''HTMLElement''.
Type ''null'' is not assignable to type ''HTMLElement''.
¿Por qué es esto y cómo puedo hacer que el código se compile sin hacer el
nullable?
Es porque document.getElementById(...);
puede devolver una instancia de HTMLElement
si se encuentra el elemento, o null
si no lo es. Ya que esta API no está bajo su control, tendrá que modificar su código para permitir que el elemento sea anulable:
var el: HTMLElement | null = document.getElementById("...");
También puede crear sus propios alias de tipo anulable:
type NullableHTMLElement = HTMLElement | null;
var el: NullableHTMLElement = document.getElementById("...");
O mejor aún, podría utilizar la solución provista por que es aún mejor!
Puedes escribir:
var el = document.getElementById(''element_id'')!;
Los ! significa "confía en mí, esto no es una referencia nula"