如何解决如果检查,还有什么更好的方法可以删除此打字稿代码?
我要迭代一个称为a的对象数组,但是a也可以是未定义的。因此,我在迭代该数组之前使用了'if'检查。但需要知道还有更好的方法吗?
let a = //a can be undefined or set of obejct
if (a !== undefined) {
a.forEach(value => {
console.log(value);
});
}
我尝试使用a?.foreach
,但是将声纳问题称为Expected assingment or functional called
。通过上述方式,我遇到了复杂性问题。
解决方法
您完全可以为此使用optional chaining operator:
a?.forEach(value => {
console.log(value);
});
如果Sonar给您一个错误,则可能是它已过时并且不了解可选的链接运算符,这是相当新的。您也许可以升级它,或告诉它忽略此行代码。
您也可以只使用if (a)
而不是if (a !== undefined)
:
if (a) {
a.forEach(value => {
console.log(value);
});
}
,
最好检查iterable
的类型,而不要检查a !== undefined
的类型。
if (Array.isArray(a)) {
a.forEach(value => {
console.log(value);
});
}
,
尽管有多种方法可以避免错误(如果未定义),但是我建议使用lodash
库的defaultTo方法。
Lodash库提供了一些非常酷的方法,这些方法在构建任何应用程序时都非常有用。
import { defaultTo } from "lodash";
let a; // it will have undefined
a = defaultTo(a,[]); // setting default to empty array if a is undefined.
a.forEach((value) => console.log(value)); // it would not throw error anymore
,
if (!!a) {a.forEach(value => {console.log(value);});}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。