2017-12-18 19 views
2

私は、オプションの値をSwiftするのに慣れていて、Typescriptにも同様のことがあります。プロパティの遅延初期化のようなものについては、要求されたときに値を初期化するnullablepublicゲッターであるプライベートプロパティを持つとよいでしょう。Typescriptでオプションの/ null可能な値をアンラップすることはできますか?

class Test { 
    private _bar: object:null = null; 
    get bar(): object { 
     if (_bar === null) { 
      _bar = { }; 
     } 
     return _bar; 
    } 
} 

私はこのために未定義使用し、プライベートメンバーからNULL値可能型情報を削除することもできます知っているが、プロパティで永遠にそのヌルを運ぶことなく、これを行う方法がある場合、私は思ったんだけど。私はnull値を処理したい場所から、null値を扱うことを誰も強制できないようにしたいという境界に行くつもりです。

答えて

1

あなたがそうのように活字体でこれを行うことができます。

class Test { 
    private _bar?: object; 
    get bar(): object { 
    if (this._bar === undefined) { 
     this._bar = { }; 
    } 
    return this._bar; 
    } 
} 

は通常、代わりにヌルの未定義が活字体で、より慣用的である使用します。

+0

これは私が今行ってきたことですが、 'null'がより適切であるか有効な値であり、それをもはやnullableではない値に移動したい場合があると考えていましたいくつかのポイント。 – Kevin

+0

あなたは何を意味するか分かりません。 - あなたがundefinedの代わりにnullを使用したい場合、それも同様に行うことができます。値をオプションとしてマークしたくない場合は、値を与える必要があります。 – Art

+0

Swiftでは、値がオプションであれば、それをアンラップして、今からはオプションではなくなっていることを知っているので、私は単に 'nonOptVal = optVal {}'を実行するか、 'guard let nonOptVal = optVal else {throw err} 'そして、データは非オプション変数' nonOptVal'に格納され、値が存在すると仮定して使用することができます。私はTypescriptに相当するものがあるのだろうかと思っていました。今のところ私が持っている唯一の回避策は '| undefined'や' | null'を含まない型に型をキャストすることです。 – Kevin

関連する問題