React-admin: Kan inte inkludera referenser i dataProvider med TypeScript


Jag försöker konfigurera dataProvider för att inkludera autentiseringsuppgifter/cookies, och genom att följa den officiella repots guide om att skicka autentiseringsuppgifter till API:et samt andra frågor, lyckades jag skapa en TypeScript-version av det:

import * as ra_core from "ra-core";
import { fetchUtils } from "react-admin";
import simpleRestProvider from "ra-data-json-server";

const httpClient = (url: any, options?: ra_core.Options) => {
  if (options) { // Have to do a null check
    console.log("run options"); // It doesn't run from here
    options.credentials = "include";
  }

  console.log("run httpClient"); // It only runs here
  return fetchUtils.fetchJson(url, options);
};

const dataProvider= simpleRestProvider("http://localhost:3000", httpClient);

return <Admin dataProvider={dataProvider}>...</Admin>

Ovanstående kod skickar inte cookies till servern, eftersom httpClient tar ett valfritt options, och att utföra en null-kontroll hoppar över det helt. Finns det någon lösning på detta?

Svar #1

Lösning :

Behöver definiera options som ett tomt objekt { }, och kasta till ra_core.Options:

const httpClient = (url: any, options = {} as ra_core.Options) => { // <- here
  options.credentials = "include"; // typescript is happy now :)
  return fetchUtils.fetchJson(url, options);
};