Оператор объединения с нулевым значением angular 2

Что эквивалентно нулевому оператору объединения (??) в angular 2?

В C # мы можем выполнить эту операцию:

string str = name ?? FirstName ?? "First Name is null";

person user2526236    schedule 08.04.2017    source источник
comment
Исправлен пример OP для правильного C #.   -  person rsenna    schedule 04.07.2019


Ответы (4)


Объединение выполняется с помощью оператора ||, т.е.

let str:string = name || FirstName || "name is null and FirstName is null";

Вы также можете прочитать этот вопрос для получения более подробной информации и пояснений.

person Roman C    schedule 09.04.2017
comment
Оператор Or (||) не совпадает с нулевым слиянием. Например: || ibrahim вернуть ibrahim и 0 || ибрахим, верни ибрахима снова. Но с объединением первая операция возвращает, а вторая возвращает 0. Поскольку нулевое объединение только контролирует, является ли левое значение равным нулю или неопределенному. - person İbrahim Dolapci; 16.07.2018
comment
Остерегайтесь - это не нулевой оператор объединения, поскольку false || true возвращает true. - person Vedran; 18.04.2019
comment
Для тех, кто думает, что это не имеет значения, поскольку переменные name и FirstName, скорее всего, strings, подумайте, как JavaScript и TypeScript обрабатывают пустые строки. Если поля name и FirstName являются пустыми строками, результатом будет name is null and First Name is null, несмотря на то, что ни одно из них не является нулевым. - person Michael Ziluck; 27.03.2020

В машинописном тексте

В Typescript введено объединение null с версией 3.7, поэтому, если вы работаете на 3.7 или выше, вы можете просто написать:

const str = name ?? firstName ?? "Name and First Name are both null";
const x = foo?.bar.baz() ?? bizz();

См. https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#nullish-coalescing.

В шаблоне Angular

Начиная с Angular 12, вы также можете использовать ?? в шаблоне.

person bersling    schedule 15.04.2021

Может быть, вы хотите добиться этого:

let str =
    typeof (name) !== 'undefined' && name !== null ?
        name : typeof (FirstName ) === 'undefined' || FirstName  === null ?
        "First Name is null" : FirstName 
person Flavio Francisco    schedule 19.11.2018
comment
Если поля name и FirstName являются пустыми строками, это приведет к First Name is null, несмотря на то, что ни одно из них не является нулевым. - person Michael Ziluck; 27.03.2020

Оператор был добавлен в TypeScript 3.7 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#nullish-coalescing

person alexkovelsky    schedule 12.10.2020