Uploaded February 2026 | Updated September 2026, 3 weeks ago
Type systems define how we reason about code, enforce safety, and manage complexity — but not all type systems approach these goals the same way. In this talk, I pit structural typing, as in TypeScript, against nominal typing, as in Kotlin, in a practical exploration of real-world scenarios. You’ll see side-by-side examples of how each system handles interoperability, composition, and code evolution, revealing where explicit identities enforce discipline and where shape-based typing unlocks flexibility and expressiveness. By the end, you’ll understand the strengths and trade-offs of each approach — and why, in many situations, structural typing gives you a surprising advantage.
Type systems define how we reason about code, enforce safety, and manage complexity — but not all type systems approach these goals the same way. In this talk, I pit structural typing, as in TypeScript, against nominal typing, as in Kotlin, in a practical exploration of real-world scenarios. You’ll see side-by-side examples of how each system handles interoperability, composition, and code evolution, revealing where explicit identities enforce discipline and where shape-based typing unlocks flexibility and expressiveness. By the end, you’ll understand the strengths and trade-offs of each approach — and why, in many situations, structural typing gives you a surprising advantage.










