如何编写以下代码的类型约束

大洋洲
interface IRouteProps {
  path: string
  name: string
}

const routesConfig: IRouteProps[] = [
  {
    path: '/login',
    name: 'login'
  }
];

let routeNames: any;

const routes: IRouteProps[] = routesConfig.forEach((route: IRouteProps) => {
    routeNames[route.name] = route.path;
});

我想从对象数组中获取每个对象的值,然后将该值用作另一个对象的键。

如果使用打字稿来约束此新对象的类型,该如何编写?

如何编写“ routeNames”的类型约束?

马西耶·西科拉(Maciej Sikora)

您的类型不是很明确,因为名称和路径是字符串。因此,您可以从中建模的结构是:

type RoutesMap = Record<IRouteProps['name'], IRouteProps['path']>

真正等于什么:

type RoutesMap = Record<string, string>

现在要创建这样的,而不是foreach,我们应该使用reduce(是的,我们也可以使用foreach,但不能像原始代码示例中那样用作表达式):

const routes = routesConfig.reduce((routes, route: IRouteProps) => {
    routes[route.name] = route.path;
    return routes;
}, {} as RoutesMap);

但是我们得到的类型仅仅是map string: string我们可以通过例如const关键字来更具体考虑:

const routesConfig = [
  {
    path: '/login',
    name: 'login'
  },
  {
    path: '/dashboard',
    name: 'dashboard'
  }
] as const; // pay attention here

type IRouteProps = typeof routesConfig[number];
type RoutesMap = Record<IRouteProps['name'], IRouteProps['path']>

const routes = routesConfig.reduce((routes, route: IRouteProps) => {
    routes[route.name] = route.path;
    return routes;
}, {} as RoutesMap);

在这种情况下,RoutesMap将指定给routesConfig对象中现有的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在jQuery中为以下代码编写验证?

来自分类Dev

如何用更少的行编写以下代码

来自分类Dev

如何在R中使用%>%编写以下代码

来自分类Dev

如何优化以下代码?

来自分类Dev

如何简化以下代码?

来自分类Dev

如何阅读以下代码?

来自分类Dev

如何简化以下代码?

来自分类Dev

如何使以下代码更好?

来自分类Dev

如何简化以下代码

来自分类Dev

有人可以解释我如何为以下代码编写junit测试代码?

来自分类Dev

如何使用条件(三元)运算符编写以下代码?

来自分类Dev

如何以正确的方式编写以下代码以打印返回值

来自分类Dev

我如何更有效地编写以下代码?

来自分类Dev

我如何优化以下代码?

来自分类Dev

如何同时执行以下代码?

来自分类Dev

如何识别以下代码模式

来自分类Dev

如何使用numba加速以下代码?

来自分类Dev

如何从以下代码输出链接列表

来自分类Dev

在Python中,以下代码如何工作?

来自分类Dev

如何对以下代码执行摘要验证?

来自分类Dev

如何使以下代码返回bash变量?

来自分类Dev

如何获得以下代码的输出?

来自分类Dev

如何使以下代码中的结果重复?

来自分类Dev

我如何运行以下代码

来自分类Dev

我如何提高以下代码的性能

来自分类Dev

如何注释掉以下代码块?

来自分类Dev

如何为以下代码创建or语句

来自分类Dev

递归在以下代码中如何工作?

来自分类Dev

如何解码以下代码