在 Typescript 中,什么是 type PoorMansUnknown = {} |空 |未定义,你会如何处理它?
In Typescript, what is type PoorMansUnknown = {} | null | undefined and how would you deal with it?
谁能帮我理解以下类型声明的含义...
type PoorMansUnknown = {} | null | undefined;
这是一个 TypeScript 声明,我在 history 包的上下文中遇到过它。
我四处搜索以尝试自己理解它,但是考虑到我对 TypeScript 还很陌生,它让我有点难过。我在上面找到了以下信息:
- original place I encountered it, history package
- another package using the approach
- a twitter conversation on it 这暗示它与 'sort of' 声明一个你不确定的东西的类型有关...
此时我的假设是,这个声明的作者打算用它来表达...在运行时,这个东西可以是空对象或 null 或未定义。
有关更多上下文,这种类型出现在我的雷达上的方式是在包内 react-router-dom (typedef here). Specifically, I went to use the component Redirect and it's property to: object 因为我希望能够告诉组件我已经路由到我之前所在的位置
例如
<Redirect to={{
pathname: "/login",
state: { from: "current-path }
}} />
反应路由器的 doco 说...
The state object can be accessed via this.props.location.state in the redirected-to component. This new referrer key (which is not a special name) would then be accessed via this.props.location.state.referrer in the Login component pointed to by the pathname '/login'
所以,我就这样去访问props.location.state...
const { from } = location.state || { from: { path: '/' } }
然后出现错误
Property 'from' does not exist on type '{} | { from: { path: string; }; }'.
我通过 typedef 链追踪它,从 LocationState 开始,一直到 PoorMansUnknown
的声明
这就是我开始困惑的地方。这是什么类型?我该如何处理?
我发现了一些与之相关的东西 here,它说要把它转换为 any
。所以我这样做了:
const { from } = location.state as any || { from: { path: '/' } }
但我不确定。它确实有效,但这只是一种解决方法吗?
长话短说,你以前遇到过这样的事情吗?
type PoorMansUnknown = {} | null | undefined;
如果是这样,您认为这意味着什么?您将如何使用使用它的组件?
PoorMansUnknown
应该等同于 unknown
类型。当 unknown
不可用时,我们使用 PoorMansUnknown
,即因为我们必须支持不支持 unknown
类型的旧版本的 TypeScript。
"Unknown" 是历史状态的默认类型。您可以自定义它:
type Props = RouteComponentProps<{}, StaticContext, { from: { pathname: string; }; }>;
const MyComponent: FC<Props> = ({ location }) => {
const { from } = location.state || { from: { pathname: '/' } }
// …
}
谁能帮我理解以下类型声明的含义...
type PoorMansUnknown = {} | null | undefined;
这是一个 TypeScript 声明,我在 history 包的上下文中遇到过它。
我四处搜索以尝试自己理解它,但是考虑到我对 TypeScript 还很陌生,它让我有点难过。我在上面找到了以下信息:
- original place I encountered it, history package
- another package using the approach
- a twitter conversation on it 这暗示它与 'sort of' 声明一个你不确定的东西的类型有关...
此时我的假设是,这个声明的作者打算用它来表达...在运行时,这个东西可以是空对象或 null 或未定义。
有关更多上下文,这种类型出现在我的雷达上的方式是在包内 react-router-dom (typedef here). Specifically, I went to use the component Redirect and it's property to: object 因为我希望能够告诉组件我已经路由到我之前所在的位置
例如
<Redirect to={{
pathname: "/login",
state: { from: "current-path }
}} />
反应路由器的 doco 说...
The state object can be accessed via this.props.location.state in the redirected-to component. This new referrer key (which is not a special name) would then be accessed via this.props.location.state.referrer in the Login component pointed to by the pathname '/login'
所以,我就这样去访问props.location.state...
const { from } = location.state || { from: { path: '/' } }
然后出现错误
Property 'from' does not exist on type '{} | { from: { path: string; }; }'.
我通过 typedef 链追踪它,从 LocationState 开始,一直到 PoorMansUnknown
的声明这就是我开始困惑的地方。这是什么类型?我该如何处理?
我发现了一些与之相关的东西 here,它说要把它转换为 any
。所以我这样做了:
const { from } = location.state as any || { from: { path: '/' } }
但我不确定。它确实有效,但这只是一种解决方法吗?
长话短说,你以前遇到过这样的事情吗?
type PoorMansUnknown = {} | null | undefined;
如果是这样,您认为这意味着什么?您将如何使用使用它的组件?
PoorMansUnknown
应该等同于 unknown
类型。当 unknown
不可用时,我们使用 PoorMansUnknown
,即因为我们必须支持不支持 unknown
类型的旧版本的 TypeScript。
"Unknown" 是历史状态的默认类型。您可以自定义它:
type Props = RouteComponentProps<{}, StaticContext, { from: { pathname: string; }; }>;
const MyComponent: FC<Props> = ({ location }) => {
const { from } = location.state || { from: { pathname: '/' } }
// …
}