即使经过空检查,获取的对象仍可能为“空”
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