typescript typescript2.0

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"