Refinement types for TypeScript
Refinement types for TypeScript
复制标题
TypeScript 的细化类型
DOI:
10.1145/2908080.2908110
复制
发表时间:
2016
期刊:
影响因子:
--
通讯作者:
Ranjit Jhala
中科院分区:
文献类型:
--
作者:
Panagiotis Vekris;B. Cosman;Ranjit Jhala
We present Refined TypeScript (RSC), a lightweight refinement type system for TypeScript, that enables static verification of higher-order, imperative programs. We develop a formal system for RSC that delineates the interaction between refinement types and mutability, and enables flow-sensitive reasoning by translating input programs to an equivalent intermediate SSA form. By establishing type safety for the intermediate form, we prove safety for the input programs. Next, we extend the core to account for imperative and dynamic features of TypeScript, including overloading, type reflection, ad hoc type hierarchies and object initialization. Finally, we evaluate RSC on a set of real-world benchmarks, including parts of the Octane benchmarks, D3, Transducers, and the TypeScript compiler. We show how RSC successfully establishes a number of value dependent properties, such as the safety of array accesses and downcasts, while incurring a modest overhead in type annotations and code restructuring.