@cjd AFAIK every theorem can be represented as a type, so static assertions are a form of static typing :P
Anyway, I think the default level of static checking should be somewhere between Java and Haskell. For JS, the default is zero.
Also, I don't see how static types could force JIT to do anything. JIT may treat it as a hint, but having more information shouldn't be limiting what it can do.