It looks like the developer was so hooked on the idea of making it minimalistic, he forgot to make it a language-learning app. So it's a blob with a backstory. Design with no substance.
I like the idea of using generators everywhere, since you have more control over how things execute. At the same time, your codes gets "infected" with unexpected types. In reality, this is very similar to async/await and promises, but those are used broadly in the ecosystem.
Both are by design. Array covariance is a common design mistake in OOP languages, which the designer of TypeScript had already done for C# but there they at least check it at runtime. And the latter was declared not-a-bug already IIRC.
TypeScript designers insist they're ok with it being unsound even on the strictest settings. Which I'd be ok with if the remaining type errors were detected at runtime, but they also insist they don't want the type system to add any runtime semantics.
"By design", for me, doesn't say that it can't be changed — maybe the design was wrong, after all. Would it be a major hurdle or create some problems if fixed today?
Wow, aren't you humble.
reply