开发者问题收集

即使经过空检查,获取的对象仍可能为“空”

2022-02-13
66
export async function getSingleUserQA(command: Command, period?: string[]) {
  let slackUserID;

  if (command && command.text) {
    slackUserID = command.text.match("/(?<=@)(.*?)(?=|)/g")[0];
  }
}

我被标记为“command”可能为“null”或“undefined”。如果我确定 command 存在并且 command.text 也存在,那该怎么办?

1个回答

仔细查看警告。它并不是说 command 可能不存在,而是说整个表达式:

command.text.match("/(?<=@)(.*?)(?=|)/g")

可能不存在。

如果正则表达式没有匹配项,您要做什么?弄清楚,并适当保护它。

if (command && command.text) {
    const match = command.text.match("/(?<=@)(.*?)(?=|)/g");
    if (match) {
        slackUserID = match[0];
    } else {
        // handle badly formatted command
    }
}

您可能还应该这样做

let slackUserID: string;

或仅在条件内使用结果。

CertainPerformance
2022-02-13