我有一个用Typescript写的Koa服务器。我想编写中间件来解析请求体,并通过上下文将它们传递给路由。为了做到这一点,我必须通过中间件改变上下文类型。有没有人知道这是可能的,或者有更好的方法来处理这个问题?我知道我可以编写一个正文解析函数并在路由中调用它,但中间件似乎是一个合适的地方来做这件事。谢谢!
px9o7tmv1#
我研究了Koa的类型,似乎State类型是答案。Koa中间件可以是类型化的,并包含对Koa的state参数的修改。这可以通过如下键入应用程序来完成
State
state
const app = new Koa<{}, KoaContext>()
其中空对象表示空状态。然后,中间件可以这样键入
module MyMiddleware { export const parseBodyMiddleware: Middleware<MyBodyType> = async (ctx, next) => { const body: MyBodyType = ... ctx.state = body await next(); }; }
这将koa的ctx.state与MyBodyType一起键入。目前还没有强制要求中间件用该类型更新状态,但如果我在那里找到解决方案,就会更新。
ctx.state
MyBodyType
1条答案
按热度按时间px9o7tmv1#
我研究了Koa的类型,似乎
State
类型是答案。Koa中间件可以是类型化的,并包含对Koa的state
参数的修改。这可以通过如下键入应用程序来完成其中空对象表示空状态。
然后,中间件可以这样键入
这将koa的
ctx.state
与MyBodyType
一起键入。目前还没有强制要求中间件用该类型更新状态,但如果我在那里找到解决方案,就会更新。