This looks nice. I love the fact that there's no runtime that needs to be included or any overhead when the compiled JS runs.
It'd be 100% more useful if it was more aware of nullable types -- as it is, it appears that
null * 7
compiles without any error messages. If they add a "nullable number" type distinct from "number", I'll be a lot more likely to use it.It also appears that some other things compile that perhaps shouldn't, such as
7[2]
and 7["a"]
even though (7).a is equivalent and (correctly) fails to compile.