尝试在 React 项目中使用 TypeScript 时遇到
import type
问题react-router-dom:6.22.3
VSCode 找不到接口
import { Route, createBrowserRouter, createRoutesFromElements } from "react-router-dom";
import type { RouteObject } from "react-router-dom";
import Root from "@src/routes/Root";
import Home from "@src/routes/Home";
const routes: RouteObject[] = createRoutesFromElements(
<Route path="/" element={<Root />}>
<Route index element={<Home />} />
</Route>
);
const opts: DOMRouterOpts =
export const router: Router = createBrowserRouter(routes, opts);
和类型
DOMRouterOpts
(从函数 Router
返回的类型)。我尝试从createBrowserRouter
安装
@types/react-router-dom
,但最新版本是5.3.3,不适用于我当前的版本6.22.3。有谁知道如何解决这个问题吗?
npm
接口
未导出。
DOMRouteOpts
如果您明确需要,您可以自己定义接口:
interface DOMRouterOpts {
basename?: string;
future?: Partial<Omit<RouterFutureConfig, "v7_prependBasename">>;
hydrationData?: HydrationState;
unstable_dataStrategy?: unstable_DataStrategyFunction;
window?: Window;
}
import type {
unstable_DataStrategyFunction,
FutureConfig as RouterFutureConfig,
HydrationState,
} from '@remix-router';
export interface DOMRouterOpts {
basename?: string;
future?: Partial<Omit<RouterFutureConfig, "v7_prependBasename">>;
hydrationData?: HydrationState;
unstable_dataStrategy?: unstable_DataStrategyFunction;
window?: Window;
}
这可能有点矫枉过正,因为
import {
createBrowserRouter,
createRoutesFromElements,
Route,
} from "react-router-dom";
import type { RouteObject } from "react-router-dom";
import type { Router as RemixRouter } from '@remix-router';
import type { DOMRouterOpts } from "@types/DOMRouterOpts";
import Root from "@src/routes/Root";
import Home from "@src/routes/Home";
const routes: RouteObject[] = createRoutesFromElements(
<Route path="/" element={<Root />}>
<Route index element={<Home />} />
</Route>
);
const opts: DOMRouterOpts = {
// ... whatever options you are trying to specify ...
};
export const router: RemixRouter = createBrowserRouter(routes, opts);
和
createRoutesFromElements
是用 Typescript 编写的,并且知道它们返回和消耗什么。路线选项基本上只需要是与
createBrowserRouter
形状匹配的对象即可。以下内容可能对您同样有效。DOMRouterOpts