如何以及何时使用 Handler 和 Handlers 类型?

问题描述 投票:0回答:1

没有

Handler
Handlers
类型
的文档:

export type Handler<T = any, State = Record<string, unknown>> = (
  req: Request,
  ctx: FreshContext<State, T>,
) => Response | Promise<Response>;

export type Handlers<T = any, State = Record<string, unknown>> = {
  [K in router.KnownMethod]?: Handler<T, State>;
};

来自 自定义处理程序 |新鲜文档:

处理程序可以有两种形式:普通函数(所有 HTTP 方法的包罗万象)或普通对象,其中每个属性都是由它处理的 HTTP 方法命名的函数。

通过这个例子:


export const handler: Handlers = {
  async GET(_req, ctx) {
    const resp = await ctx.render();
    resp.headers.set("X-Custom-Header", "Hello");
    return resp;
  },
};

所以我认为

Handlers
是对象版本,
Handler
是函数版本。不过,我不知道它们的类型变量是什么意思。我猜它们是响应的类型,但是这个测试没有给我带来错误:

export const handler: Handlers<number> = {
  GET() {
    return new Response('a string')
  }
}

那么如何正确使用它们呢?

types httpresponse httphandler freshjs
1个回答
0
投票

仔细看

Handler

export type Handler<T = any, State = Record<string, unknown>> = (
  req: Request,
  ctx: FreshContext<State, T>,
) => Response | Promise<Response>;

类型变量

T
State
用于
FreshContext
。由于 HTTP 响应只是一个字符串,因此
Response
不需要有任何类型变量。因此,它的类型变量只是帮助您记住您拥有的上下文类型,而不影响
return
语句。

© www.soinside.com 2019 - 2024. All rights reserved.