Typescript TS2531:对象可能是';空';即使我检查它不是
我从TS编译器中得到此错误:“TS2531:对象可能是以下代码中的“null”:Typescript TS2531:对象可能是';空';即使我检查它不是,typescript,Typescript,我从TS编译器中得到此错误:“TS2531:对象可能是以下代码中的“null”: const routeParamsCheck = ( routeParams: unknown ): routeParams is { slug: string; locale: string } => { return ( routeParams !== null && typeof routeParams === 'object' && 's
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)。重写此代码的正确方法是什么。谢谢 显然,在线路图之后null,typescript仍然认为该类型是未知的。就类型而言,没有任何变化。我不知道为什么会这样(也许这是一个bug或
unknown
类型的已知限制),但有一个非常简单的修复方法可以做到:只需交换前两行的顺序:
return (
typeof routeParams === 'object' &&
routeParams !== null &&
'slug' in routeParams &&
'locale' in routeParams
);
这样,第一行将unknown
缩小到object | null
,第二行将object | null
缩小到object
。FYI这是一个已知的类型脚本