N4JS adds a static type system similar to that of Java to ECMAScript 2015. This type system supports nominal and structural typing, in both cases supporting generics similar to that of Java 8. In order to capture details specific to ECMAScript, additional constructs are introduced such as union types, 'this' type, and special forms of structural types. Additional concepts required for larger projects are built in, e.g., dependency injection, test support, and various component types.
N4JS provides an extensible framework for representing and manipulating JS and N4JS files. Based on this framework, it provides integrated, extensible tooling that supports instantaneous validation, content assist, and quick fixes, as well as launch support for running the code and associated tests.