Посмотрите на RESTDataSource.ts # L100 исходного кода пакета apollo-datasource-rest
.
Исходный код метода didReceiveResponse
:
protected async didReceiveResponse<TResult = any>(
response: Response,
_request: Request,
): Promise<TResult> {
if (response.ok) {
return (this.parseBody(response) as any) as Promise<TResult>;
} else {
throw await this.errorFromResponse(response);
}
}
Они используют утверждения типа, такие как:
return (this.parseBody(response) as any) as Promise<TResult>;
Итак, вы можете сделать то же самое , если вы уверены, что значение null
именно то, что вы хотите
Например:
SomeDataSource.ts
:
import { RESTDataSource } from 'apollo-datasource-rest';
import { Response, Request } from 'apollo-server-env';
class SomeDataSource extends RESTDataSource {
protected async didReceiveResponse<TResult>(res: Response, req: Request): Promise<TResult> {
if (res.status === 404) {
return (null as any) as Promise<TResult>;
}
return super.didReceiveResponse<TResult>(res, req);
}
}
tsconfig.json
:
"strictNullChecks": true /* Enable strict null checks. */,