Javascript 进行比较时,对象可能为空错误Typescript

Javascript 进行比较时,对象可能为空错误Typescript,javascript,typescript,Javascript,Typescript,我有一个简单的分类: dataCopy.sort((a: Data, b: Data) => { if (a[label] === null || b[label] === null) return 0; if (direction === "desc") return a[label] > b[label] ? 1 : -1; return 0; }); “数据”类型为: 我检查a[label]和b[label]是否都为null,并且仍然得到错误“Object

我有一个简单的分类:

dataCopy.sort((a: Data, b: Data) => {
  if (a[label] === null || b[label] === null) return 0;
  if (direction === "desc")
    return a[label] > b[label] ? 1 : -1;
  return 0;
});
“数据”类型为:


我检查a[label]和b[label]是否都为null,并且仍然得到错误“Object可能为'null'。ts(2531)”。这似乎只发生在>和<运算符上。

它可能不够聪明,无法看到您已检查。顺便说一句,您没有发布标签的来源,但假设这不是问题所在,请尝试以下方法:

dataCopy.sort((a: Data, b: Data) => {
  const aLabel = a[label];
  const bLabel = b[label];
  if (aLabel === null || bLabel === null) return 0;
  if (direction === "desc")
    return aLabel > bLabel ? 1 : -1;
  return 0;
});

有时,您必须考虑一些因素,以便TypeScript可以看到您已经检查了诸如
==null

之类的条件。谢谢,这是一个很好的教训。它可以告诉我是否检查了变量aLabel,但不能告诉我是否检查了[label]。
dataCopy.sort((a: Data, b: Data) => {
  const aLabel = a[label];
  const bLabel = b[label];
  if (aLabel === null || bLabel === null) return 0;
  if (direction === "desc")
    return aLabel > bLabel ? 1 : -1;
  return 0;
});