我有一个简单的排序:
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)”。似乎只有>和<运算符会发生这种情况。
答案 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
之类的条件。