是否可以在 TypeScript 中解开可选/可为空的值?

Kev*_*vin 6 lazy-initialization typescript

我习惯了 Swifts 的可选值,并且看到 TypeScript 有类似的东西。对于诸如属性的延迟初始化之类的事情,拥有一个私有属性nullable和一个public在请求时初始化值的getter 会很好。

class Test {
   private _bar: object:null = null;
   get bar(): object {
       if (_bar === null) {
           _bar = { };
       }
       return _bar;
   }
}
Run Code Online (Sandbox Code Playgroud)

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

Art*_*Art 3

您可以在 TypeScript 中执行此操作,如下所示:

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

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

  • 所以在 Swift 中,如果一个值是可选的,但我想打开它,以便我知道从现在开始它不再是可选的,我可以只做 `if let nonOptVal = optVal { }` 或者我可以使用 `guard let nonOptVal = optVal else { throw err }` 然后数据存储在非可选变量 `nonOptVal` 中,假设该值存在,我可以使用它。我想知道 Typescript 中是否有等效的东西。到目前为止,我唯一的解决方法是将类型转换为不包含“|undefined”或“|null”的类型。 (5认同)