我已经看到了在插值QuestionMark中进行内插的情况?”与变量名一起使用。
示例:current?.sample.innerSample
我不确定它的用途。 非常感谢您的帮助。
谢谢
答案 0 :(得分:2)
?.
是安全的导航操作符。它可以防止对象路径出现undefined
或null reference
错误。例如:
如果您在{{ data.somepropertyname }}
文件中写入template
而未在data
文件中定义typescript
成员变量,则会引发如下错误
无法获取未定义的
somepropertyname
但是,如果您这样写{{data?.somepropertyname}}
,就不会抛出错误
检查示例Stackblitz
执行注释和取消注释行号8 & 9
,您将在控制台中看到输出
答案 1 :(得分:0)
您可以使用typescript online console来检查其含义。例如:
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未定义