Sounds great.
But I supsect PHP had to make big tradeoffs for its checked-at-runtime types that would make this hard.
In contrast to TypeScript or Flow, which can only check the program flow at compile time, PHP will crash and burn if you pass an int into a string function parameter at runtime.
Would you expect the presumed type aliases to be checked at runtime too?
There are already union types in PHP 8, but no aliases.
I think in PHP it is always the best approach to work with classes, whose type you can check at runtime (in contrast to duck-typed languages such as JS, where there is instanceof but that is generally a last resort).
Structural types checked at compile time are a different approach to the one PHP chose I think. Alhough the lines between compilation and execution are blurry in a JIT language of course.