TypeScript is a typed superset of JavaScript that introduces static typing and classes to JavaScript. It adds a compiler that validates code based on static types, interfaces, modules, and other features. Key features include declared types for variables and function parameters/returns, classes with inheritance and static properties, modules to organize code, and interfaces with structural typing. External type declarations bring these benefits to existing JavaScript libraries without changing the code.