在打字稿中,什么是PoorMansUnknown = {}类型?空|未定义,您将如何处理?

问题描述 投票:0回答:1

有人可以帮我理解以下类型声明的含义...

type PoorMansUnknown = {} | null | undefined;

这是一个TypeScript声明,我在history包的上下文中遇到了它。

我已经四处搜寻以尝试自己理解它,但是鉴于TypeScript我还很陌生,它让我有些困惑。我发现了以下信息:

我的假设是在这一点上,此声明的作者希望它是一种表达方式……在运行时,该对象可以是空对象,也可以是null或未定义。

[更多情况下,这种类型在我的雷达上出现的方式在包装react-router-domtypedef here)之内。具体来说,我去使用了组件Redirect及其属性to: object,因为我想知道该组件我已经路由到了我之前所在的位置

例如

<Redirect to={{
  pathname: "/login",
  state: { from: "current-path }
 }} />

反应路由器的Doco说...

状态对象可以通过重定向到组件中的this.props.location.state访问。然后,可以通过路径名'/ login']指向的Login组件中的this.props.location.state.referrer访问此新的引荐来源网址关键字(不是特殊名称)。

所以,我这样访问props.location.state ...

const { from }  = location.state || { from: { path: '/' } }

我得到一个错误

Property 'from' does not exist on type '{} | { from: { path: string; }; }'.

我从LocationState开始通过typedef链进行跟踪,一直到PoorMansUnknown的声明

这就是我开始困惑的地方。这是什么类型?我应该如何处理?

我发现了与之相关的内容here,表示将其强制转换为any。因此,我做到了:

const { from }  = location.state as any || { from: { path: '/' } }

但是我不确定。它确实有效,但这只是解决方法吗?


长话短说,您以前遇到过类似的东西吗?

type PoorMansUnknown = {} | null | undefined;

如果是的话,您认为这意味着什么,以及如何处理使用它的组件?

有人可以帮我理解以下类型声明的含义吗……type PoorMansUnknown = {} |空|未定义这是一个TypeScript声明,我在...

reactjs typescript react-router-dom history
1个回答
0
投票

PoorMansUnknown应该等效于unknown类型。 PoorMansUnknown不可用时,我们使用unknown,即因为我们必须支持不支持unknown类型的较旧版本的TypeScript。

© www.soinside.com 2019 - 2024. All rights reserved.