You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确使用TanStack React Router的Route类型获取路由path?

TanStack React Router 路由类型不兼容问题及解决方案

问题代码

用户编写的TypeScript代码如下:

import type {Route} from "@tanstack/react-router";
import {Route as MeRoute} from '@/app/(start)/me/index.tsx'
import {Route as MessageRoute} from '@/app/(start)/message/index.tsx'

interface Item {
  label: string
  route: Route
}

const items: Item[] = [
  {
    label: "me",
    route: MeRoute
  },
  {
    label: "message",
    route: MessageRoute
  }
]

报错信息

运行时触发类型不兼容错误:

Types of property isRoot are incompatible.
Type false is not assignable to type true
Test. tsx(14, 3): The expected type comes from property route which is declared here on type Item

问题原因

@tanstack/react-router中的Route类型特指根路由(强制isRoot: true),而你导入的MeRoute、MessageRoute属于子路由,它们的isRoot属性值为false,直接用Route类型约束子路由实例就会触发类型不匹配错误。

正确实现方式

方案1:使用通用路由类型约束

改用AnyRoute类型(TanStack Router提供的通用路由类型,兼容所有路由实例)来定义Item接口,这样就能正常导入子路由并获取路径:

import type { AnyRoute } from "@tanstack/react-router";
import { Route as MeRoute } from '@/app/(start)/me/index.tsx'
import { Route as MessageRoute } from '@/app/(start)/message/index.tsx'

interface Item {
  label: string
  route: AnyRoute
}

const items: Item[] = [
  {
    label: "me",
    route: MeRoute
  },
  {
    label: "message",
    route: MessageRoute
  }
]

// 获取路由路径示例
const mePath = items[0].route.path;

方案2:直接导出并使用路由路径

如果只需要获取路由路径,没必要导入整个路由实例,可以在每个路由文件中单独导出路径:

在@/app/(start)/me/index.tsx中:

import { createRoute } from "@tanstack/react-router";

export const Route = createRoute({
  path: '/me',
  // 其他路由配置...
});

// 单独导出路径
export const mePath = Route.path;

同理在@/app/(start)/message/index.tsx中导出messagePath,然后在使用文件中:

import { mePath } from '@/app/(start)/me/index.tsx';
import { messagePath } from '@/app/(start)/message/index.tsx';

interface Item {
  label: string
  path: string
}

const items: Item[] = [
  {
    label: "me",
    path: mePath
  },
  {
    label: "message",
    path: messagePath
  }
]

这种方式更轻量化,也完全避免了类型冲突问题。

内容的提问来源于stack exchange,提问作者SageJustus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:40:01