角度8:
我以前在打字的时候用过一个小技巧:object['accessor']['accessor']['accessor']
得到object.accessor.accessor.accessor
如果其中一个孩子是空的,就不会有犯错误的风险。
在typescript文件中,根据当今的ecma脚本标准,最好的方法是什么?
编辑:
我发现这个https://medium.com/inside-rimeto/optional-chaining-in-typescript-622c3121f99b
b/嵌套的三元表达式似乎是最好的,但它似乎很复杂
编辑2:
不管怎样,这同样会导致应用程序不可修复地崩溃(尽管是在组件级别)。
似乎较新的语言规则更为严格。他们只是没有提供其他选择。
最佳答案
我更喜欢布尔表达式方法。
let object = {
accessor: {
accessor: {
accessor: "test"
}
}
}
if (object
&& object.accessor
&& object.accessor.accessor
&& object.accessor.accessor.accessor) {
console.log(object.accessor.accessor.accessor);
} else {
console.log(null);
}
如果你不关心编译时错误检查,你可以做一些像这样奇怪的事情。我不推荐。
function tryGetValue(obj, propertiesPath) {
if (!obj) {
return null;
}
if (!propertiesPath) {
return obj;
}
let current = obj;
let properties = propertiesPath.split(".");
for (let i = 0; i < properties.length; i++) {
if (current[properties[i]] !== undefined) {
current = current[properties[i]];
} else {
current = null;
break;
}
}
if (current !== undefined) {
return current;
} else {
return null;
}
}
console.log(tryGetValue(object, "accessor.accessor.accessor"));
关于angular - Angular 8 Native Typescript无崩溃,访问器速记,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57960362/