Static Types with Less Syntax: Locus Types

Loading...
Thumbnail Image

Date

2017-05-01

Authors

Domurad, Adam

Journal Title

Journal ISSN

Volume Title

Publisher

University of Waterloo

Abstract

Optionally and gradually-typed languages allow types to be introduced to dynamic code as needed. While this approach allows some gradual movement from dynamically to statically-typed code, it requires rewriting object-constructing code to use conventional static types. We introduce a flexible notion of type, deemed "locus types", that aims to minimize syntactic burden and the need for refactoring when introducing types to dynamic code. Locus types are gained by objects that pass through an annotated code site, following the creed of "code is types". Their structure is inferred from local type information computed through flow-based type refinement. The design of LocusTypeScript, a language extending TypeScript with locus types, is detailed. Tooling support, building on that of TypeScript, for programming with locus types is described. As well, the general properties and applicability of locus types are explored. LocusTypeScript's simple algorithm for computing stable flow-based refinement types is presented. The implications and performance impact of making locus types sound are discussed.

Description

Keywords

Gradual typing, programming languages, type inference, JavaScript, optional typing, TypeScript, type systems

LC Keywords

Citation