top | item 35124590

(no title)

dimaaan | 3 years ago

Similar trick for JSON-based web API's that returns either error message or result

    async fetchApi<TResult = void>(request: Request): Promise<TResult> {
      type SuccessfulApiResponse = { Succeeded: true; Result: TResult }
      type FailedApiResponse = { Succeeded: false; Error: string | null | undefined }
      type ApiResponse = SuccessfulApiResponse | FailedApiResponse;
      const response = await fetch(request);
      ensureStatusOK(response);
      const result = await response.json() as ApiResponse
      if (!result.Succeeded) throw new Error(result.Error || 'Unknown API error');
      return result.Result
    }

discuss

order

No comments yet.