module Tuple : sig ... endmodule Array : sig ... endmodule Union : sig ... endtype ('M, 'T) t = 'T * ('M, 'T) t'and ('M, 'T) t' = | Any of ('M, unit) Syntax.t option| Mixed of ('M, unit) Syntax.t option| Empty of ('M, unit) Syntax.t option| Void of ('M, unit) Syntax.t option| Null of ('M, unit) Syntax.t option| Number of ('M, unit) Syntax.t option| BigInt of ('M, unit) Syntax.t option| String of ('M, unit) Syntax.t option| Boolean of ('M, unit) Syntax.t option| Symbol of ('M, unit) Syntax.t option| Exists of ('M, unit) Syntax.t option| Nullable of ('M, 'T) Nullable.t| Function of ('M, 'T) Function.t| Object of ('M, 'T) Object.t| Interface of ('M, 'T) Interface.t| Array of ('M, 'T) Array.t| Generic of ('M, 'T) Generic.t| IndexedAccess of ('M, 'T) IndexedAccess.t| OptionalIndexedAccess of ('M, 'T) OptionalIndexedAccess.t| Union of ('M, 'T) Union.t| Intersection of ('M, 'T) Intersection.t| Typeof of ('M, 'T) Typeof.t| Tuple of ('M, 'T) Tuple.t| StringLiteral of 'M StringLiteral.t| NumberLiteral of 'M NumberLiteral.t| BigIntLiteral of 'M BigIntLiteral.t| BooleanLiteral of 'M BooleanLiteral.t
and ('M, 'T) annotation = 'M * ('M, 'T) tand ('M, 'T) annotation_or_hint = | Missing of 'T| Available of ('M, 'T) annotation