【问题标题】:Null coalescing operator in React JS/ Typescript [duplicate]React JS / Typescript中的空合并运算符[重复]
【发布时间】:2018-09-27 01:49:30
【问题描述】:

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

string postal_code = address?.postal_code;

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

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

在 address.ts 文件中

string postal_code = address && address.postal_code;

我需要的 .net 功能可以在带有 react JS 的 typescript 中实现,这可能吗?

类似:

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

【问题讨论】:

标签: javascript .net reactjs typescript null-check


【解决方案1】:

这是 TypeScript 中提出的一个功能,在传说中的 Issue #16 下

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

它被称为以下任何一种:

  • 空传播运算符
  • 存在运算符
  • 空合并运算符

【讨论】:

  • 这有什么更新吗?看起来问题仍然被锁定。另外,目前有什么有效的解决方法吗?
  • “空合并”运算符是 related-but-different ?? 运算符。这两个提案最近都进入了第二阶段,所以希望它会尽快实施!
【解决方案2】:

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

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

使用可选链,如果address 是null 或undefined,postal_code 将得到undefined 作为其值。但是如果address既不是null也不是undefined,postal_code会得到address.postal_code的值。


JavaScript 没有 null-coalescing 运算符(TypeScript 也没有,它大部分仅限于添加类型层并采用在将其转化为 JavaScript 的道路上相当远的特性) .有is a proposal for a JavaScript null-coalescing operator,但它只是在the process 的第一阶段。

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

let postal_code = address && address.postal_code;

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


¹ 虚假值为0、""、NaN、null、undefined,当然还有false。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 2012-09-19
    • 2011-02-13
    • 2010-10-12
    • 2010-09-25
    • 2013-09-13
    • 2014-02-07
    相关资源
    最近更新 更多