Функция Typescript для объединения результатов из остальных служб с async / await - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь объединить данные из нескольких источников с машинописью, и по какой-то причине я не могу понять это.

Я сделал две функции:

  1. async getOrdersByUserId(userId)
  2. async getOrderDetailsByOrderId(orderId)

Эти две функции вызывают один бэкэнд каждого покоя каждый что приводит к следующим json документам:

{
   "orders": [
     "order1", 
     "order2"
   ],
   "name": "Sol Blomma"
}

и пример структуры json из getOrderDetailsByOrderId будет выглядеть следующим образом.

{
     "items": [ 
       "item1": {
         "id": "1234",
         "quantity": "50"
       },
       "item1": {
         "id": "1235",
         "quantity": "40"
       },
       "item1": {
         "id": "1236",
         "quantity": "20"
       }
      ]
}

Как создать функция машинописи, которая в качестве параметра принимает userId и возвращает одну структуру json ордеров и все их детали?

1 Ответ

0 голосов
/ 09 апреля 2020

Вы можете использовать ReturnType, чтобы получить тип функции и merge(union) тип возврата новой функции.

Посмотрите на пример.

type IFn1 = { name: string };
type IFn2 = { age: number };
const fn1 = (): IFn1 => ({ name: "deepak" });
const fn2 = (): IFn2 => ({ age: 30 });

type T10 = ReturnType<() => IFn1>; // string
type T11 = ReturnType<() => IFn2>; // void

const merge = (): T10 | T11 => {
  return {
    ...fn1(),
    ...fn2(),
  };
};

console.log(merge());

/*
// Error
const merge2 = (): T10 | T11 => {
  return {
    ...fn1(),
    ...{ age: "30" },
  };
};
console.log(merge()); // Error
*/
...