我从TS编译器收到此错误:在以下代码中为“ TS2531:对象可能为'null'”:
const routeParamsCheck = (
routeParams: unknown
): routeParams is { slug: string; locale: string } => {
return (
routeParams !== null &&
typeof routeParams === 'object' &&
'slug' in routeParams &&
'locale' in routeParams
);
};
我想知道为什么会在此行发生:routeParams中的'slug'(对我来说,很明显routeParams此时不能为null)。什么是重写此代码的正确方法。谢谢!
答案 0 :(得分:2)
显然,在routeParams !== null
行之后,打字稿仍认为该类型为unknown
。即,就类型而言,没有任何改变。我不确定为什么会这样(也许是unknown
类型的错误或已知限制),但是您可以执行一个非常简单的修复:只需交换前两行的顺序即可:
return (
typeof routeParams === 'object' &&
routeParams !== null &&
'slug' in routeParams &&
'locale' in routeParams
);
这样,第一行会将unknown
缩小为object | null
,而第二行可以将object | null
缩小为object
。