'How to use an inner Flow type?

I have a generated file which exports MyComplicatedType, which has a parameter child with the type I actually want to use. The inner type is not named or exported in the generated file.

export type MyComplicatedType = {|
  +child: $ReadOnlyArray<{|
   // Complicated type
  |}>
|};

Is there any way I can use the type of child without copy/pasting? Since the code is generated, I would have to re-copy/paste every time I rebuild otherwise.



Solution 1:[1]

You can use a $Call to extract it.

Example:

type TypeNeeded = $Call<
     <T>({
             +child:$ReadOnlyArray<T>
           })=>T,
     MyComplicatedType
>

To retrieve what you have in the $ReadOnlyArray.

You can see more complicated examples in the document: https://flow.org/en/docs/types/utilities/#toc-call

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 whilrun