是否可以在Typescript中解包可选/可空值?

时间:2017-12-18 19:43:43

标签: typescript lazy-initialization

我习惯了Swifts的可选值,看看Typescript有类似的东西。对于像属性的惰性初始化这样的东西,最好有一个nullable的私有属性和一个public的getter,它会在请求时初始化值。

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

我知道我可以为此使用undefined并从私有成员中删除可空类型信息,但是我想知道是否有办法这样做而不必永久地使用该属性携带该null。我要从一个我想处理空值的地方到一个我不再希望迫使任何人处理可以为空的值的边界。

1 个答案:

答案 0 :(得分:1)

你可以在TypeScript中这样做:

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

通常在TypeScript中使用undefined而不是null是更惯用的。