• Not strongly typed and type checks only at runtime
• No namespaces
• No uniform module system
New programming languages often use an existing infrastructure. For example, Scala, Groovy and Kotlin rely on Java and the JVM. Even low-level languages like Rust, Julia or Clang rely on the LLVM backend. At the same time, these languages try to emancipate themselves from their host environment: New libraries, often incompatible with the existing infrastructure, are introduced. In addition, dogmatic decisions often determine development, although the choice of a programming language can be considered pragmatic.
Discover Code Issues Early
Modules in TypeScript were previously referred to as external modules. With TypeScript version 1.5, the term changed from external modules to (global) modules. TypeScript supports the following (global) module systems: CommonJS, AMD, SystemJS, Universal Module Definition and the standard ECMAScript 2015 (ES6).
TypeScript modules provide the ability to group related logical operations, encapsulate them, structure the source code, and generally avoid contamination of the global namespace. Modules can provide functions that are only visible within the module, and they can provide functions that are visible from the outside via the export keyword. Modules can be consumed by the keyword "import" in the corresponding source files.