It’s not quite fair to blame TypeScript for not supporting these high level concepts yet, when the language is in constant iteration and flux and that exact feature has been promised, but proven really hard to get right. They are constantly working with the community to get that feature out, the right way. The amount of features that TypeScript gains each month is staggering and is already sporting several features that Haskell doesn’t even have.
As for the specific example of higher kinded types, the feature has been promised and is actively worked on by the community and being moderated by the TypeScript staff. You can already type it though, using the strategy outlined in this paper: https://www.cl.cam.ac.uk/~jdy22/papers/lightweight-higher-kinded-polymorphism.pdf
Reference implementation and explanation here:
https://medium.com/@gcanti/higher-kinded-types-in-typescript-static-and-fantasy-land-d41c361d0dbe
