8

我们有 Null 合并运算符.NET,我们可以使用如下

string postal_code = address?.postal_code;

我们可以在 React JS 中做同样的事情吗?

我发现我们可以用 && 运算符做

address.ts文件中

string postal_code = address && address.postal_code;

我需要的 .net 功能可以在带有 React JS 的打字稿中实现,这可能吗?

就像是:

string postal_code = address?.postal_code // I am getting the error in this line if I try to use like .NET
4

2 回答 2

6

这是 TypeScript 中提出的功能,在传说中的问题 #16下

在此功能的 ECMAScript 规范确定之前,它不会被引入 TypeScript,因为希望 TypeScript 实现遵循该规范 - 所以你会尽早得到它,但在这种情况下不会太早。

它被称为以下任何一种:

  • 空传播运算符
  • 存在算子
  • 空合并运算符
于 2018-04-17T07:34:42.187 回答
4

2020 年更新:下面提到的 nullish-coalescing 运算符现在已经完成了这个过程,并且在 ES2020 中,可选的链接运算符也可以让你这样做:

let postal_code = address?.postal_code;
// −−−−−−−−−−−−−−−−−−−−−−^

使用可选链接, if addressis nullor undefined,postal_codeundefined作为它的值。但如果addressis 既不null也不undefinedpostal_code将得到 的值address.postal_code


JavaScript 没有 null-coalescing 运算符(TypeScript 也没有,它主要限制自己添加类型层并采用在将其转化为 JavaScript 的道路上相当远的特性)。有一个 JavaScriptnull合并运算符的提议,但它只是在流程的第 1阶段

使用&&您描述的成语是一种相当常见的方法:

let postal_code = address && address.postal_code;

如果addressnull(或任何其他虚假¹值),postal_code将是相同的值;否则,它将是任何值address.postal_code


¹ 假值是0, "", NaN, null, undefined, 当然false

于 2018-04-17T07:35:04.073 回答