Small improvement to the type engine in order to make types more flexible

Currently, it’s too hard to make a typed table modifiable, however, it is possible, but it doesn’t work properly in some cases

See, currently the best solution to this is:

export type BaseComponent<T> = {Public : T}
local Foo = Component.new() :: Component.BaseComponent<typeof({})>
Foo.Public.Test = 1;
Foo.Public.Test --> properly types and type checks!

However, this solution breaks down when attempting to use any sort of typed operator (&, |)
See:

local Bar = Component.inherit(Foo) :: typeof(Foo) & Component.BaseComponent<typeof({})> 
Bar.Public.Test2 = 1;
Bar.Public.Test2; -- now this will not type complete, and it will not recognise it.

This is a really cool feature and allows for a lot of things to be typed and such, however it isn’t intended and it can clearly be seen when trying to do literally anything with a runtime defined type. So, seeing that the capability is clearly there, i ask atleast for typed operators to be properly useable. (Also, my own guess to why the bug may occur is probably because the Test2 variable attempts to “index” Foo.Public, and when its not found it quits out early without searching / parsing the other types.)

Also, i dont really mind the entire typeof({}) thing, but it’d be nice if there was a shortcut for it, something like UserTable / utable.

If anyone knows of any way to fix my problem, or if this has already been addressed before, i’d love to be informed about it.