Experimental types

Extending the TypeScript type system with negation and refined number types