Unfortunately TypeScript doesn&#x27;t support higher kinded types, so you can&#x27;t write interfaces for most of Haskell&#x27;s most popular typeclasses.<p>And there is something that a dynamic (and&#x2F;or gradually typed) languages will never be able to do: function overload based on the function&#x27;s return type, e.g. like Haskell&#x27;s `return` :)<p>edit: oh wait, after monad of no return its `pure` :D