【发布时间】:2020-08-10 03:40:29
【问题描述】:
我正在使用 TypeScript 编写一个 Link 组件,并试图实现一个支持我的应用程序路由使用的各种参数的类型化 API。
我有一些这样定义的路线:
enum Routes {
CONTACT = '/contact'
PRODUCT = '/product/[productId]'
}
type RouteParams = {
[Routes.CONTACT]: undefined;
[Routes.PRODUCT]: {
productId: string
}
}
Link 组件 API 是这样的:
type LinkProps = React.FC<{ href: Routes, params?: {} }>
我的问题是,这里的params 是否可以根据输入的href 值动态更改为RouteParams 中定义的正确类型?
例如:
<Link href={Routes.CONTACT} /> // correctly typed
<Link href={Routes.PRODUCT} params={{}} /> // error: missing 'productId' param
【问题讨论】:
-
为什么不将参数定义为 [k: string]: string;
-
感谢您的评论,这肯定是一个改进,但我认为它不能解决这里关于动态类型的问题。再次感谢!
标签: reactjs typescript