File tree Expand file tree Collapse file tree 1 file changed +20
-7
lines changed Expand file tree Collapse file tree 1 file changed +20
-7
lines changed Original file line number Diff line number Diff line change @@ -125,16 +125,29 @@ export type ResponseType<R extends Route> = R["settings"]["response"];
125125export type BodyType < R extends Route > = "body" extends keyof R [ "settings" ] [ "response" ]
126126 ? R [ "settings" ] [ "response" ] [ "body" ]
127127 : unknown ;
128+
129+ type MoreThanOne < T , Td = T > = T extends unknown
130+ ? [ Td ] extends [ T ]
131+ ? never
132+ : T
133+ : never ;
134+
135+ type FallbackStatus < T > = "status" extends keyof T
136+ ? T extends { status : MoreThanOne < T [ "status" ] > }
137+ ? T
138+ : never
139+ : never ;
140+
128141/**
129142 * Get the response type for a route matching a specific status code
130143 */
131- export type SpecificResponseType < R extends Route , S extends StatusCode = StatusCode > = R [ "settings" ] [ "response" ] extends { status : S }
132- ? R [ "settings" ] [ "response" ]
133- : "status" extends keyof R [ "settings" ] [ "response" ]
134- ? S extends R [ "settings" ] [ "response" ] [ " status" ]
135- ? R [ "settings" ] [ "response" ]
136- : RouteSettings [ " response"]
137- : RouteSettings [ "response" ] ;
144+ export type SpecificResponseType <
145+ R extends Route ,
146+ S extends StatusCode = StatusCode ,
147+ Ex = Extract < R [ "settings" ] [ "response" ] , { status : S } > ,
148+ > = Extract < R [ "settings" ] [ "response" ] , { status : S } > extends never
149+ ? FallbackStatus < R [ "settings" ] [ " response"] >
150+ : Ex ;
138151/**
139152 * Get the response body type for a route matching a specific status code
140153 */
You can’t perform that action at this time.
0 commit comments