打字稿推断类型不正确 - 作为别名导入并默认为any

问题描述 投票:0回答:1

我正在使用 Nextjs 作为前端,使用 Bun & hono 作为后端构建一个 monorepo。我正在尝试使用 hono rpc:https://hono.dev/docs/guides/rpc。我在后端项目的 app.ts 文件中导出路由器的类型,如下所示:

import createApp from '@/lib/create-app'
import configureOpenAPI from '@/lib/configure-open-api'
import index from '@/routes/index.route'
import users from '@/routes/user/user.index'
import connects from '@/routes/connects/connects.index'

const app = createApp()

const routes = [index, users, connects] as const

configureOpenAPI(app)

routes.forEach((route) => {
  app.route('/', route)
})

export default app

export type AppType = (typeof routes)[number]

然后尝试将其导入到我的 client.ts 文件中的前端项目中

import type { AppType } from '../backend/src/app'
import { hc } from 'hono/client'

const client = hc<AppType>('http://localhost:8000')

export default client

这不起作用,我的类型被推断为任何类型。当我将鼠标悬停在后端 app.ts 中的应用程序类型上时 - 我看到这种类型

type AppType = OpenAPIHono<AppBindings, {
    "/": {
        $get: {
            input: {};
            output: {
                message: string;
            };
            outputFormat: "json" | "text";
            status: 200;
        };
    };
}, "/"> | OpenAPIHono<AppBindings, {
    ...;
}, "/"> | OpenAPIHono<...>

它 100% 具有正确的类型。

当我将鼠标悬停在 client.ts 中的 AppType 上时,我看到了以下内容:

(alias) type AppType = any
import AppType

如何解决这个问题:

自己查看的存储库+所有 tsconfig:https://github.com/charlietlamb/postpad

谢谢您的帮助!

typescript next.js tsconfig bun hono
1个回答
0
投票

终于回答了这个问题 - 需要补充

"references": [
        { "path": "../backend/tsconfig.json" }
    ],

到我的后端和

"composite" : true

在我的前端

https://www.youtube.com/watch?v=S-jj_tifHl4

© www.soinside.com 2019 - 2024. All rights reserved.