logo small e ntropitor

Talks

Don't compromise on speedy delivery nor type-safety by choosing TypeScript

It is often said that we should choose the right tool for the job. When we want a language that doesn’t crash at runtime, we often think of Rust or Haskell. When we want the language to enable speedy delivery, JavaScript comes to mind. But what to choose if we want both type-safety and speedy delivery?

This talk will show that in such a scenario TypeScript is an excellent bet. Over the years, TypeScript has developed a very powerful type system. One that is on par with languages like Rust, without sacrificing the speedy delivery of JavaScript. It’s still fast to develop the code we want and it’s easy to make it type-safe.

I will show how we’ve used TypeScript to match Rust in making programs type-safe and how a form of dependent types (type operators) can even express some constraints that are difficult to express in other languages.

This talk covered
  • What is so unique about TypeScript
  • How it allows to make programs type-safe
  • How easy it is to do so
  • What the limitations are

Guest Lecture TypeScript / JavaScript

KU Leuven University- 2021, 2019 & 2018 -

In 2018 & 2019, I had the pleasure of giving a guest lecture to my alma mater, KU Leuven University about JavaScript for a course on programming languages. I explained how many different features in different languages are able to model "continuations", a concept from the course. JavaScript mainly has Generators at its use and with it we can model Algebraic Effects (e.g. eff-lang, ocaml, ...) as well as monads (from Haskell) and how the Promise object is one instance of this along with it's do-notation: async/await.

In 2021, I talked about TypeScript and its unique Type System. How it was added to an existing language, similar to how e.g. Ruby / Python / PHP added a type-system to their language. Then I explained how TypeScript is very unique and more powerful than most other languages: TypeScript doesn't allow to access type-information at runtime and it doesn't have a macro system BUT it allows you to infer types from values and allows you to program with types. The type-system itself is Turing Complete!