Какая польза от questionmark (?) в переменной машинописного текста?

Я видел сценарий, в котором во внутренней интерполяции QuestionMark '?' используется с именем переменной. пример: current?.sample.innerSample

Я не уверен, для чего это используется. Любая помощь горячо приветствуется.

Спасибо

Это safe navigation operator, он будет использован в файле шаблона.

Sivakumar Tadisetti 10.09.2018 08:06
9
1
6 122
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

?. - оператор безопасной навигации. Это предотвращает пути к объектам от ошибок undefined или null reference. Например:

Если вы запишете {{ data.somepropertyname }} в файл template без определения переменной-члена data в файле typescript, это вызовет ошибку, как показано ниже.

Cannot get somepropertyname of undefined

Но если вы напишете вот так {{data?.somepropertyname}}, ошибка не будет

Посмотрите пример Stackblitz

Прокомментируйте и раскомментируйте номера строк 8 & 9, вы увидите результат в консоли.

Вы можете использовать машинописная онлайн-консоль, чтобы проверить, что это означает. Например:

var obj = {
    a: {
        b: {
            c: null
        }
    }
};

var test = obj.a.b.c?.d;
console.log(test) // undefined

будет переведен на:

"use strict";
var _a;
var obj = {
    a: {
        b: {
            c: null
        }
    }
};
var test = (_a = obj.a.b.c) === null || _a === void 0 ? void 0 : _a.d;
console.log(test); // undefined

Если не поставить? это приведет к TypeError: Cannot read property 'd' of null, поскольку c равно нулю, а d не определено

Другие вопросы по теме