Typescript变量中Question()的用途是什么?

时间:2018-09-10 06:02:31

标签: angular typescript

我已经看到了在插值QuestionMark中进行内插的情况?”与变量名一起使用。 示例:current?.sample.innerSample

我不确定它的用途。 非常感谢您的帮助。

谢谢

2 个答案:

答案 0 :(得分:2)

?.是安全的导航操作符。它可以防止对象路径出现undefinednull 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未定义