Typescript is a strict syntactical superset of JavaScript that adds type safety. It allows defining type annotations for variables, functions, objects, and function return values to catch errors. Typescript uses a static and structural type system. Its types include primitives, objects, arrays, functions, classes, generics, and utility types. Typescript code compiles to JavaScript, so it doesn't change runtime behavior but can catch errors earlier.