Vurv78/Expressive

[feature] Complex type system

Vurv78 opened this issue · 0 comments

Is your feature request related to a problem? Please describe.
Objects don't exist in the type system, and classes cannot exist without a complex type system.
Right now types are strings. Either the "typename", or "function(ptype, ptype2):ret" for function signatures.

Describe the solution you'd like
The type class to have a bunch of methods and fields to define whether it is variadic, an alias, an array (xyz[]) type, optional / nullable, an enum type (number | string) or a raw enum "foo" | "bar".

This would be an internal change, so it wouldn't add something like this:

type foo = number;
type bar = foo | string;

Additional context
This is necessary to resolve #13