A conference talk comparing structural and nominal type systems, using TypeScript, Go, OCaml, Kotlin, Java, and C# as examples. The structural type system is illustrated through a declarative query language built with TypeScript generics, showing dynamic type construction and type-level computation. The nominal type system is demonstrated via a compile-time guaranteed finite state machine in Kotlin, enforcing valid state transitions without runtime logic. The talk concludes that neither system is universally better — the choice depends on project context, with structural systems excelling at flexible API integration and type-level computation, while nominal systems shine for enforcing identity, semantic safety, and controlled state machines.

42m watch time

Sort: