Нулевой оператор объединения в React JS/Typescript

У нас есть оператор объединения Null в .NET, и мы можем использовать его, как показано ниже.

string postal_code = address?.postal_code;

То же самое мы можем сделать в React JS?

Что я обнаружил, как мы можем сделать с оператором &&

в файле address.ts

string postal_code = address && address.postal_code;

то, что мне нужно, например, функция .net возможна в машинописном тексте с реакцией JS, возможно ли это?

что-то типа:

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

person Praveen Kumar    schedule 17.04.2018    source источник
comment
Это будет скоро..github.com/tc39/proposal-nullish-coalescing   -  person Jonas Wilms    schedule 17.04.2018


Ответы (2)


Это предлагаемая функция в TypeScript в соответствии с легендарной ошибкой №16.

Он не будет введен в TypeScript до тех пор, пока спецификация ECMAScript для этой функции не станет твердой, поскольку есть желание, чтобы реализация TypeScript следовала этой спецификации, поэтому вы получите ее раньше, но в этом случае не слишком рано.

Это называется любым из следующих:

  • Нулевой оператор распространения
  • Экзистенциальный оператор
  • Нулевой оператор объединения
person Fenton    schedule 17.04.2018
comment
Есть новости по этому поводу? Похоже, проблема все еще закрыта. Кроме того, есть ли какие-либо эффективные обходные пути на данный момент? - person Trevor; 04.03.2019
comment
Оператор объединения null — это связанный, но отличный ?? оператор. Также оба этих предложения недавно перешли на этап 2, так что, надеюсь, скоро они будут реализованы! - person Dave; 07.07.2019

Обновление в 2020 г.: Упомянутый ниже оператор нулевого объединения сейчас проходит процесс и в ES2020, как и необязательный оператор цепочки, который позволяет:

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

С необязательной цепочкой, если address равно null или undefined, postal_code получит undefined в качестве своего значения. Но если address не является ни null, ни undefined, postal_code получит значение address.postal_code.


В JavaScript нет оператора объединения с нулевым значением (как и в TypeScript, который в основном ограничивается добавлением уровня типов и внедрением функций, которые достаточно далеко продвинулись на пути к превращению их в JavaScript). Существует предложение по null-коалесцирующему оператору JavaScript, но это только на этапе 1. процесса.

Использование описанной вами идиомы && является довольно распространенным подходом:

let postal_code = address && address.postal_code;

Если address равно null (или любому другому ложному¹ значению), то postal_code будет тем же самым значением; в противном случае это будет любое значение address.postal_code.


¹ Ложные значения: 0, "", NaN, null, undefined и, конечно же, false.

person T.J. Crowder    schedule 17.04.2018