[Typescript] Show the error close to where it's causes

Example code:

const routingConfig = {
  routes: [
    {
      path: "home",
      component: "HomeComponent",
    },
    {
      path: "about",
      component: 12,
    },
    {
      path: "contact",
      component: "ContactComponent",
    },
  ],
};

const createRoutes = (config: {
  routes: {
    path: string;
    component: string;
  }[];
}) => {};

createRoutes(routingConfig);

 

The error message is kind of hard to read. The key problem is The 'number' is not assignable to type 'string', so how to make error message show close to where it's cause?

 

Solution 1: Inline the object:

createRoutes({
  routes: [
    {
      path: "home",
      component: "HomeComponent",
    },
    {
      path: "about",
      component: 12,
    },
    {
      path: "contact",
      component: "ContactComponent",
    },
  ],
});

 

Solution 2: Extra a type

type RoutingConfig = {
  routes: {
    path: string;
    component: string;
  }[];
}

const routingConfig: RoutingConfig = {
  routes: [
    {
      path: "home",
      component: "HomeComponent",
    },
    {
      path: "about",
      component: 12,
    },
    {
      path: "contact",
      component: "ContactComponent",
    },
  ],
};

const createRoutes = (config: RoutingConfig) => {};

createRoutes(routingConfig);

 

Solution 3: satisfies

const routingConfig = {
  routes: [
    {
      path: "home",
      component: "HomeComponent",
    },
    {
      path: "about",
      component: 12,
    },
    {
      path: "contact",
      component: "ContactComponent",
    },
  ],
} satisfies RoutingConfig;

posted @ 2024-01-23 21:16  Zhentiw  阅读(2)  评论(0编辑  收藏  举报