Skip to content

Commit 2cdc2b1

Browse files
authored
fix(HttpResponse): strictly annotate all response methods (#2509)
1 parent b06fd0e commit 2cdc2b1

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

src/core/HttpResponse.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ export class HttpResponse<
116116
static xml<BodyType extends string>(
117117
body?: BodyType | null,
118118
init?: HttpResponseInit,
119-
): Response {
119+
): HttpResponse<BodyType> {
120120
const responseInit = normalizeResponseInit(init)
121121

122122
if (!responseInit.headers.has('Content-Type')) {
@@ -135,7 +135,7 @@ export class HttpResponse<
135135
static html<BodyType extends string>(
136136
body?: BodyType | null,
137137
init?: HttpResponseInit,
138-
): Response {
138+
): HttpResponse<BodyType> {
139139
const responseInit = normalizeResponseInit(init)
140140

141141
if (!responseInit.headers.has('Content-Type')) {
@@ -157,7 +157,7 @@ export class HttpResponse<
157157
static arrayBuffer(
158158
body?: ArrayBuffer | SharedArrayBuffer,
159159
init?: HttpResponseInit,
160-
): Response {
160+
): HttpResponse<ArrayBuffer | SharedArrayBuffer> {
161161
const responseInit = normalizeResponseInit(init)
162162

163163
if (!responseInit.headers.has('Content-Type')) {
@@ -168,7 +168,7 @@ export class HttpResponse<
168168
responseInit.headers.set('Content-Length', body.byteLength.toString())
169169
}
170170

171-
return new HttpResponse(body as ArrayBuffer, responseInit)
171+
return new HttpResponse(body, responseInit)
172172
}
173173

174174
/**
@@ -179,7 +179,10 @@ export class HttpResponse<
179179
*
180180
* HttpResponse.formData(data)
181181
*/
182-
static formData(body?: FormData, init?: HttpResponseInit): Response {
182+
static formData(
183+
body?: FormData,
184+
init?: HttpResponseInit,
185+
): HttpResponse<FormData> {
183186
return new HttpResponse(body, normalizeResponseInit(init))
184187
}
185188
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/**
2+
* @see https://github.com/mswjs/msw/issues/2506
3+
*/
4+
import { http, HttpResponse, HttpResponseResolver } from 'msw'
5+
6+
it('supports a union of the matching explicit and implicit response resolvers', () => {
7+
function handle(resolver?: HttpResponseResolver<never, never, string>) {
8+
const defaultResolver = () => HttpResponse.html('<div>test</div>')
9+
http.get('/path', resolver || defaultResolver)
10+
}
11+
})

0 commit comments

Comments
 (0)