Author here. The article is nominally about Dart, but really it should be useful to anyone wondering about the different approaches languages taking to representing the absence of values. I've seen a lot of questions and confusion over the past couple of years between option types (Scala, Swift, Haskell, Rust) and nullable types (Kotlin, TypeScript, Dart). This article is my attempt to try to show the similarities, differences, and trade-offs between those two approaches.
As always, nice article. Just wanted to point out in case people are curious that Dart is looking at adding pattern matching, since it's mentioned in the article.