微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果检查,还有什么更好的方法可以删除此打字稿代码?

如何解决如果检查,还有什么更好的方法可以删除此打字稿代码?

我要迭代一个称为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 举报,一经查实,本站将立刻删除。