比较时对象可能为空错误打字稿

时间:2020-05-20 01:04:58

标签: 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;
});

“数据”类型为:

export type Data = {
  [key: string]: string | number | null;
};

我检查a [label]和b [label]是否都为null,并且仍然收到错误“对象可能为'null'.ts(2531)”。似乎只有>和<运算符会发生这种情况。

1 个答案:

答案 0 :(得分:1)

可能还不够聪明,无法看到您进行了检查。顺便说一句,您没有发布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;
});

有时您必须将其排除在外,以便TypeScript可以查看是否已检查过诸如=== null之类的条件。