1
- interface ResponseType {
1
+ interface ReturnTypeMap {
2
2
"text" : string ;
3
3
"json" : unknown ;
4
4
"form" : FormData ;
@@ -29,7 +29,7 @@ export interface FetchInit extends Omit<RequestInit, "integrity" | "window"> {
29
29
* const response = await fetchExtend("./asset", "byte");
30
30
* ```
31
31
*/
32
- export async function fetchExtend < T extends keyof ResponseType > ( path : string , type : T , option ?: FetchInit ) : Promise < ResponseType [ T ] > {
32
+ export async function fetchExtend < T extends keyof ReturnTypeMap > ( path : string , type : T , option ?: FetchInit ) : Promise < ReturnTypeMap [ T ] > {
33
33
const u = new URL ( path , globalThis ?. location ?. href ) ;
34
34
u . hash = "" ;
35
35
@@ -52,17 +52,17 @@ export async function fetchExtend<T extends keyof ResponseType>(path: string, ty
52
52
} ) ;
53
53
54
54
switch ( type ) {
55
- case "text" : return < ResponseType [ T ] > await response . text ( ) ;
56
- case "json" : return < ResponseType [ T ] > await response . json ( ) ;
57
- case "form" : return < ResponseType [ T ] > await response . formData ( ) ;
58
- case "byte" : return < ResponseType [ T ] > new Uint8Array ( await response . arrayBuffer ( ) ) ;
59
- case "buffer" : return < ResponseType [ T ] > await response . arrayBuffer ( ) ;
60
- case "blob" : return < ResponseType [ T ] > await response . blob ( ) ;
61
- case "stream" : return < ResponseType [ T ] > ( response . body ?? undefined ) ;
62
- case "ok" : await response . body ?. cancel ( ) ; return < ResponseType [ T ] > response . ok ;
63
- case "code" : await response . body ?. cancel ( ) ; return < ResponseType [ T ] > response . status ;
64
- case "header" : await response . body ?. cancel ( ) ; return < ResponseType [ T ] > response . headers ;
65
- case "response" : return < ResponseType [ T ] > response ;
55
+ case "text" : return < ReturnTypeMap [ T ] > await response . text ( ) ;
56
+ case "json" : return < ReturnTypeMap [ T ] > await response . json ( ) ;
57
+ case "form" : return < ReturnTypeMap [ T ] > await response . formData ( ) ;
58
+ case "byte" : return < ReturnTypeMap [ T ] > new Uint8Array ( await response . arrayBuffer ( ) ) ;
59
+ case "buffer" : return < ReturnTypeMap [ T ] > await response . arrayBuffer ( ) ;
60
+ case "blob" : return < ReturnTypeMap [ T ] > await response . blob ( ) ;
61
+ case "stream" : return < ReturnTypeMap [ T ] > ( response . body ?? undefined ) ;
62
+ case "ok" : await response . body ?. cancel ( ) ; return < ReturnTypeMap [ T ] > response . ok ;
63
+ case "code" : await response . body ?. cancel ( ) ; return < ReturnTypeMap [ T ] > response . status ;
64
+ case "header" : await response . body ?. cancel ( ) ; return < ReturnTypeMap [ T ] > response . headers ;
65
+ case "response" : return < ReturnTypeMap [ T ] > response ;
66
66
default : throw new Error ( ) ;
67
67
}
68
68
}
0 commit comments