Quantcast
Channel: ReScript Forum - Latest posts
Viewing all articles
Browse latest Browse all 2592

Merge tuples types

$
0
0

It really depends on the component.

In some components, I have a single query, while in others, I have eight queries. Sometimes all the queries share the same generic type; other times, they do not.

Currently, I’m using something like this:

let combine8 = (
  a: ReactFirehooks.Firestore.queryResult<'a'>,
  b: ReactFirehooks.Firestore.queryResult<'b'>,
  c: ReactFirehooks.Firestore.queryResult<'c'>,
  d: ReactFirehooks.Firestore.queryResult<'d'>,
  e: ReactFirehooks.Firestore.queryResult<'e'>,
  f: ReactFirehooks.Firestore.queryResult<'f'>,
  g: ReactFirehooks.Firestore.queryResult<'g'>,
  h: ReactFirehooks.Firestore.queryResult<'h'>
) => {
  switch (a, b, c, d, e, f, g, h) {
  | ((_, true, _), _, _, _, _, _, _, _)
  | (_, (_, true, _), _, _, _, _, _, _)
  | (_, _, (_, true, _), _, _, _, _, _)
  | (_, _, _, (_, true, _), _, _, _, _)
  | (_, _, _, _, (_, true, _), _, _, _)
  | (_, _, _, _, _, (_, true, _), _, _)
  | (_, _, _, _, _, _, (_, true, _), _)
  | (_, _, _, _, _, _, _, (_, true, _)) =>
    Loading
  | ((_, _, Some(error)), _, _, _, _, _, _, _)
  | (_, (_, _, Some(error)), _, _, _, _, _, _)
  | (_, _, (_, _, Some(error)), _, _, _, _, _)
  | (_, _, _, (_, _, Some(error)), _, _, _, _)
  | (_, _, _, _, (_, _, Some(error)), _, _, _)
  | (_, _, _, _, _, (_, _, Some(error)), _, _)
  | (_, _, _, _, _, _, (_, _, Some(error)), _)
  | (_, _, _, _, _, _, _, (_, _, Some(error))) =>
    Error(error)
  | (
      (Some(qsA), _, _),
      (Some(qsB), _, _),
      (Some(qsC), _, _),
      (Some(qsD), _, _),
      (Some(qsE), _, _),
      (Some(qsF), _, _),
      (Some(qsG), _, _),
      (Some(qsH), _, _)
    ) =>
    Data((qsA, qsB, qsC, qsD, qsE, qsF, qsG, qsH))
  | _ => Unknown
  }
}

While these generic types are usually limited to three or four actual types, they may change over time.


Viewing all articles
Browse latest Browse all 2592

Trending Articles