簡體   English   中英

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

[英]How can I use packages that extend `koa.Request` in TypeScript?

我試圖同時使用koa-tree-routerkoa-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;
    }
}

但它似乎沒有做任何事情。 我發現了這個問題,但是直接導入koa-bodyparser也沒有做任何事情。 如何讓 TypeScript 識別擴展Request類型?

編輯:在我的項目中創建一個包含以下內容的.d.ts文件:

import {Request} from "koa";

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

使編譯錯誤 go 消失,但這似乎是一個不優雅的解決方案,因為我必須為每個修改koa.Request的 package 復制類型信息。

發生這種情況是因為我使用的是 Yarn PnP,並且安裝了兩個不同版本的@types/koa 一旦我向我的package.json添加了一個resolutions字段,強制所有其他 TypeScript 定義使用相同版本的@types/koa ,一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM