(すごい) https://github.com/honojs/hono/blob/7e62 bcd22fa4e8f0e83cb564bac85e32f5434dd3/src /types.ts#L127 直前までのmiddlewareで拡張されたContext を、各middlewareに順番に渡すような推論 は難しい // app.get(handler x 4) < P extends string = CurrentPath, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, E2 extends Env = E, E3 extends Env = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, // Middleware M1 extends H<E2, P, I> = H<E2, P, I>, M2 extends H<E3, P, I2> = H<E3, P, I2>, M3 extends H<E4, P, I3> = H<E4, P, I3>, >( ...handlers: [H<E2, P, I> & M1, H<E3, P, I2> & M2, H<E4, P, I3> & M3, H<E5, P, I4, R>] ): HonoBase< IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, S & ToSchema< M, P, I4, | MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> >, BasePath, CurrentPath > Honoの内部実装