Typy obiektów o dowolnej strukturze

Typy obiektów o dowolnej strukturze
Black007
  • Rejestracja:ponad 21 lat
  • Ostatnio:dzień
0

Cześć, uczę się reduxa i mam taki problem:

Mam taki interface:

Kopiuj
export interface Request {
  method: string;
  body: any;
}

export interface Respone {
  body: any;
}

export interface Event {
  request: Request;
  response: Respone;
}

Strzelam reduxem do backendu, który zwraca mi taki object Respnse z body z jsonem

Kopiuj
"response": {
"body": {
"status": "ok"
}
}
},

Chciałbym, żeby body mogł być dowolnym jasonem. Czy ktoś coś takiego robił?

W tej chwili dostaję taki błąd:

Kopiuj
Error: Objects are not valid as a React child (found: object with keys {status}). If you meant to render a collection of children, use an array instead.
▶ 26 stack frames were collapsed.
(anonymous function)
C:/Users/bgora/IdeaProjects/Mockify/frontend/mockify-ui/src/actions/index.ts:28
  25 | return async (dispatch: Dispatch<FecthAction>) => {
  26 |   const response = await events.get(`${path}`);
  27 | 
> 28 |   dispatch({
     | ^  29 |     type: ActionType.FETCH_DATA,
  30 |     payload: response.data,
  31 |   });

"Nie popełnia błędów tylko ten, kto nic nie robi"
edytowany 4x, ostatnio: Riddle
Tasmanian Devil
Twój post prawdopodobnie zawiera niesformatowany kod - nie wklejaj bezpośrednio kodu, ale obejmuj go w odpowiednie znaczniki! (jestem botem, ten komentarz został dodany automatycznie)
Xarviel
  • Rejestracja:ponad 3 lata
  • Ostatnio:dzień
  • Postów:847
0

Możesz stworzyć sobie interfejsy generyczne, zamiast tego any

Kopiuj
export interface Request<T = Record<string, any>> {
  method: string;
  body: T;
}

export interface Respone<T = Record<string, any>> {
  body: T;
}

Ale sama zmiana typu nie naprawi tego błędu, musiałbyś wstawić kod komponentu/reduxa z przykładem użycia

Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Laska, z Polski
  • Postów:10086
1
Black007 napisał(a):

W tej chwili dostaję taki błąd:

Kopiuj
Error: Objects are not valid as a React child (found: object with keys {status}). If you meant to render a collection of children, use an array instead.
▶ 26 stack frames were collapsed.
(anonymous function)
C:/Users/bgora/IdeaProjects/Mockify/frontend/mockify-ui/src/actions/index.ts:28
  25 | return async (dispatch: Dispatch<FecthAction>) => {
  26 |   const response = await events.get(`${path}`);
  27 | 
> 28 |   dispatch({
     | ^  29 |     type: ActionType.FETCH_DATA,
  30 |     payload: response.data,
  31 |   });

Ale to nie wygląda jak błąd typescriptowy, tylko jakbyś chciał wyrenderować niepoprawny element.

Black007
Dzięki, zorientowałem się, że powinienem dać JSON.stringify() przy renderze

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.