TypeScriptにおいて、strictPropertyInitializationをtrueにしていると値がUndifinedである可能性を含むようになるかと思います。
process.env.NODE_ENV // string | undifined process.env.NODE_ENV.length // Undifinedである可能性があります。
###試したこと
コードを書く上で、値の中身がstringである確証があっても「Undifined可能性がある」という理由でコードが通りません。
迂回方法と2つ方法を取っております。
① 事前に定義した変数へ代入する
let node_env:string; if(typeof process.env.NODE_ENV === ’string’){ node_env = process.env.NODE_ENV; } node_env.length // 文字数が出力
②「!.」を使用する。
process.env.NODE_ENV!.length // 文字数出力
その他、「キャストさせる」や「strictチェックを解除する」方法がありますがアンチパターンだと聞きますので除きました。
###質問
Undifinedの可能性がある値の適切の扱い方はどういった方法なんでしょうか?
私が記述しました、
①の方法はコードが冗長になりあまり良い書き方ではないと思います。
②の方法、ネットでチラ見してから使うようになりましたが、tsconfigでstrictチェックしないように設定していると変わらないような気がします。
コードを書く上で使用する値のほとんどがUndifinedの可能性を含んでおり、早めに理想の書き方を思い質問させて頂きました。
何卒よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/21 06:30