首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用在`koa.Request`中扩展TypeScript的包?

如何使用在`koa.Request`中扩展TypeScript的包?
EN

Stack Overflow用户
提问于 2021-06-20 17:23:35
回答 1查看 418关注 0票数 0

我试图同时使用koa-tree-routerkoa-bodyparser,但是我不断地得到TypeScript错误:

代码语言:javascript
复制
export const userLoggingRouter = new KoaTreeRouter<any, DefaultContext>();

userLoggingRouter.post('/logs/action', (ctx) => {
  const logEntries = ctx.request.body;
  const user = ctx.state.user;

  // ...
});

error TS2339:属性'body‘在类型'Request’上不存在。

我安装了@types/koa-bodyparser,它包含以下定义:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
import {Request} from "koa";

declare module "koa" {
  interface Request {
    body: any;
  }
}

使编译错误消失,但这似乎是一个不雅观的解决方案,因为我必须复制修改koa.Request的每个包的类型信息。

EN

回答 1

Stack Overflow用户

发布于 2021-06-20 21:14:20

之所以发生这种情况,是因为我正在使用Yarn PnP,并且安装了两个不同版本的@types/koa。一旦我将一个resolutions字段添加到我的package.json中,强制所有其他TypeScript定义使用相同版本的@types/koa,一切就都正常了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68058375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档