Chapter

ECOOP 2014 – Object-Oriented Programming

Volume 8586 of the series Lecture Notes in Computer Science pp 257-281

Understanding TypeScript

  • Gavin BiermanAffiliated withOracle
  • , Martín AbadiAffiliated withMicrosoft
  • , Mads TorgersenAffiliated withMicrosoft

* Final gross prices may vary according to local VAT.

Get Access

Abstract

TypeScript is an extension of JavaScript intended to enable easier development of large-scale JavaScript applications. While every JavaScript program is a TypeScript program, TypeScript offers a module system, classes, interfaces, and a rich gradual type system. The intention is that TypeScript provides a smooth transition for JavaScript programmers—well-established JavaScript programming idioms are supported without any major rewriting or annotations. One interesting consequence is that the TypeScript type system is not statically sound by design. The goal of this paper is to capture the essence of TypeScript by giving a precise definition of this type system on a core set of constructs of the language. Our main contribution, beyond the familiar advantages of a robust, mathematical formalization, is a refactoring into a safe inner fragment and an additional layer of unsafe rules.