我正在使用 Strapi 和 TypeScript 开发一个应用程序。我想知道
ctx
参数的正确类型是什么,例如传递给中间件或控制器?
这里提到我们可以使用import { Context } from "koa";
来为
ctx
提供类型。但是这样做时我遇到了很多 TypeScript 错误,例如这里:
// path: ./src/api/[api-name]/middlewares/my-middleware.ts
export default async (ctx: Context, next: () => Promise<any>) => {
const newName = ctx.request.body.name;
if (!newName) {
return ctx.badRequest('name is missing', { foo: 'bar' })
}
await next();
}
我会收到一个错误,ctx.badRequest
似乎只需要一个参数,即使这个示例取自官方 Strapi 文档。
koa
导入的,我可以像这样使用它:
import { Context, Next } from 'koa';
export default {
exampleAction: async (ctx: Context, next: Next): Promise<void> => {
try {
ctx.body = 'ok';
next();
} catch (err) {
ctx.body = err;
}
}
};