奇怪的对象可能是打字稿中的"null"错误

  • 本文关键字:null 错误 对象 typescript
  • 更新时间 :
  • 英文 :


我有这个简单的函数来检查一个未知的值是否看起来像Date对象:

function looksLikeDate(obj: unknown): obj is { year: unknown; month: unknown; day: unknown } {
return (
obj !== null && typeof obj === "object" && "year" in obj && "month" in obj && "day" in obj
);
}

但是对于代码的"year" in obj部分,我得到以下错误:

对象可能为'null'。(2531)

当我切换obj !== nulltypeof obj === "object"时,错误消失:TS Playground Link

这不是很奇怪吗?有人能给我解释一下吗?
typeof null === 'object'

如果你在null检查之后做typeof检查,obj可以为空,即使你之前检查了null,但是TS编译器有点naïve。

从这个意义上说,这些类型保护符有点脆弱,如在您的示例中,typeof obj === 'object'将类型从"not null">更改为object | null

相关内容

  • 没有找到相关文章

最新更新