Typing the Untyped: Soundness in Gradual Type Systems
summary
Compares TypeScript, Flow, MyPy, Sorbet, Java, Go and Rust through concrete failures and fixes: reading the second array element yields JavaScript undefined and a missed bug unless types are nillable (Sorbet) or Python raises IndexError (MyPy); refining a mutable value requires copying to a local const because Flow invalidates refinements after external calls while TypeScript is optimistic; arrays are covariant in TypeScript (risking runtime errors), Flow forces invariance or readonly and Java inserts runtime checks.
AI-written summary · about
chapters (7)
- 0:00Introduction to gradual typing
- 1:30Soundness vs completeness in types
- 6:27Case study array bounds
- 11:20Refinement and validation
- 17:18Understanding variance
- 32:59Trade-offs in type systems
- 36:08Conclusion and Q&A
related talks
21mGradual Typing is the best!
28mPractical Confidence: Using Types to Help Your Computer Help You
21mThe long-tail of type safety
53m"Strict" JavaScript: Types Versus Reality
30mRust-Inspired Typescript
19mHow Typed is Your Framework?
25mWhy static types in Javascript? — Preethi Kasireddy
30mSwipe Left, Uncaught TypeError Learning to Love Type Systems
