Skip to content

Commit 6fcdc22

Browse files
committedApr 8, 2022
feat: add generic response type support for eventHandler
1 parent 884460b commit 6fcdc22

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed
 

‎src/event.ts

+7-5
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,18 @@ export interface H3Event {
1212

1313
export type CompatibilityEvent = H3Event | IncomingMessage
1414

15-
export type _JSONValue<T=string|number|boolean> = T | T[] | Record<string, T>
15+
type _JSONValue<T=string|number|boolean> = T | T[] | Record<string, T>
1616
export type JSONValue = _JSONValue<_JSONValue>
17-
export type H3Response = void | JSONValue | Buffer
1817

19-
export interface EventHandler {
18+
type _H3Response = void | JSONValue | Buffer
19+
export type H3Response = _H3Response | Promise<_H3Response>
20+
21+
export interface EventHandler<T extends H3Response = H3Response> {
2022
'__is_handler__'?: true
21-
(event: CompatibilityEvent): H3Response| Promise<H3Response>
23+
(event: CompatibilityEvent): T
2224
}
2325

24-
export function defineEventHandler (handler: EventHandler) {
26+
export function defineEventHandler <T extends H3Response = H3Response> (handler: EventHandler<T>): EventHandler<T> {
2527
handler.__is_handler__ = true
2628
return handler
2729
}

0 commit comments

Comments
 (0)
Please sign in to comment.