如何解决如何在 TypeScript 中使用扩展 `koa.Request` 的包?
我正在尝试同时使用 koa-tree-router
和 koa-bodyparser
,但我不断收到 TypeScript 错误:
export const userLoggingRouter = new KoaTreeRouter<any,DefaultContext>();
userLoggingRouter.post('/logs/action',(ctx) => {
const logEntries = ctx.request.body;
const user = ctx.state.user;
// ...
});
错误 TS2339:“请求”类型上不存在属性“正文”。
我安装了 @types/koa-bodyparser
,它包含以下定义:
import * as Koa from 'koa';
declare module 'koa' {
interface Request {
body: string | Record<string,unknown>;
rawBody: string;
}
}
但它似乎没有做任何事情。我找到了 this question,但直接导入 koa-bodyparser
也没有任何作用。如何让 TypeScript 识别扩展的 Request
类型?
编辑:在我的项目中创建一个包含以下内容的 .d.ts
文件:
import {Request} from "koa";
declare module "koa" {
interface Request {
body: any;
}
}
使编译错误消失,但这似乎是一个不雅的解决方案,因为我必须为每个修改 koa.Request
的包复制类型信息。
解决方法
发生这种情况是因为我使用的是 Yarn PnP 并且安装了两个不同版本的 @types/koa
。一旦我将 resolutions
字段添加到我的 package.json
,强制所有其他 TypeScript 定义使用相同版本的 @types/koa
,一切正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。