“object is possibly null”を回避するnon-null演算子 – TypeScript

TypeScriptでパラメータに!を付けると「nullではないこと」を宣言することができます。

例えば以下のような単純なコードを組んでみます。

const getNumberLength = function(format:string){
   if(format.match(/\d/g)){
      return format.match(/\d/g).length; // object is possibly 'null'
    }else{
      return 0;
    }
}

この関数ではmatchを使って文字列内に数字がいくつあるか?を取得しようとしています。

ただし、条件分岐ifでそもそも文字列の中に数字があるかを判定しているので、lengthを取得する際にはformat.match(~)はnullにならないはずですが、実際には”object is possibly null”と警告が出る場合があります。

このとき処理の流れ上「nullにはならない場合」には、”!”演算子をつかってパラメータがnullでないことを明示することで警告を回避することができます。

return format.match(/\d/g)!.length;

この”!”をNon-null assertion operator(非nullアサーション演算子)といいます。

Related Posts