Create Interface src/CreateInterface.res
type r = {name: string, age: int}
let add: (~x: int, ~y: int) => int
@react.component
let make: (~name: string) => React.element
module Other: {
  @react.component
  let otherComponentName: (~name: string) => React.element
}
module Mod: {
  @react.component
  let make: (~name: string) => React.element
}
module type ModTyp = {
  @react.component
  let make: (~name: string) => React.element
}
@module("path") external dirname: string => string = "dirname"
@module("path") @variadic
external join: array<string> => string = "join"
@val
external padLeft: (
  string,
  @unwrap
  [
    | #Str(string)
    | #Int(int)
  ],
) => string = "padLeft"
@inline
let f1: int
@inline let f2: string
@genType @inline
let f3: int
@genType @inline
let f4: string
@genType @inline let f5: float
module RFS: {
  @module("fs")
  external readFileSync: (
    ~name: string,
    @string
    [
      | #utf8
      | @as("ascii") #useAscii
    ],
  ) => string = "readFileSync"
}
module Functor: () =>
{
  @react.component
  let make: unit => React.element
}
module type FT = {
  module Functor: (
    X: {
      let a: int
      @react.component
      let make: (~name: string) => React.element
      let b: int
    },
    Y: ModTyp,
  ) =>
  {
    @react.component
    let make: (~name: string) => React.element
  }
}
module NormaList = List
module BeltList = Belt.List
module type MT2 = ModTyp
module rec RM: ModTyp
and D: ModTyp
module type OptT = {
  @react.component
  let withOpt1: (~x: int=?, ~y: int) => int
  module type Opt2 = {
    @react.component
    let withOpt2: (~x: int=?, ~y: int) => int
  }
  module type Opt3 = {
    @react.component
    let withOpt3: (~x: option<int>, ~y: int) => int
  }
}
module Opt: {
  @react.component
  let withOpt1: (~x: int=?, ~y: int) => int
  module Opt2: {
    @react.component
    let withOpt2: (~x: int=?, ~y: int) => int
  }
  module type Opt2 = {
    @react.component
    let withOpt2: (~x: int=?, ~y: int) => int
  }
  module Opt3: {
    @react.component
    let withOpt3: (~x: option<int>, ~y: int) => int
  }
  module type Opt3 = {
    @react.component
    let withOpt3: (~x: option<int>, ~y: int) => int
  }
}
module Opt2: OptT
module Opt3 = Opt
module Memo: {
  @react.component
  let make: (~name: string) => React.element
}

