2016-11-16 7 views
10

、コードStrictNullChecksとgetElementByIdを

var el: HTMLElement = document.getElementById('element_id'); 

してエラーが発生した

Type 'HTMLElement | null' is not assignable to type 'HTMLElement'. 
Type 'null' is not assignable to type 'HTMLElement'. 

なぜこれがあるとどのように私はコードがel NULL可能せずにコンパイルするために得ることができますか?

答えて

12

あなたは書くことができます。

var el = document.getElementById('element_id')!; 

! 「信頼してください、これはヌルリファレンスではありません」

+0

これまでにこのオペレータは見たことがありません。ドキュメントはほとんどありません。 – series0ne

+0

乾杯!はい、私はそれを見た場所を覚えていません:p – AlexG

+0

私はこれが存在しないという手がかりはありませんでした。これは、よりよく文書化する必要があります。私はstrictNullChecksのようなケースのために避けていました。 – pllee

1

document.getElementById(...);は、要素が見つかった場合はHTMLElementのインスタンスを返すことができ、そうでない場合はnullを返すことができるからです。このAPIは、あなたのコントロール下ではありません、あなたは要素がNULL可能であることを許可するようにコードを変更する必要がありますので:

var el: HTMLElement | null = document.getElementById("..."); 

また、独自のNULL可能タイプのエイリアスを作成することができます

type NullableHTMLElement = HTMLElement | null; 
var el: NullableHTMLElement = document.getElementById("..."); 

またはそれ以上あなたはまだAlexGによって提供されるソリューションを使用することができますが、これはさらに優れています!