TypeScript is a strict superset of JavaScript that adds optional static typing and classes to the language without limiting JavaScript functionality. It allows for compile-time checking of code and outputs plain JavaScript that runs on any browser or JavaScript engine. TypeScript supports classes, modules, interfaces and other features to help organize large applications, while also allowing for optional type annotations that enable type checking and catch errors.