Hi Żabojad, not an answer to your question but one of the benefit of the Type parameters is for inference of types.
Imaging these two cases:
static public function execute1<T:Action>(a : T) : T {}
static public function execute2(a : Action) : Action {}
Lets say you have ActionB which extends Action.
var sample1 = execute1(myActionA);
// type of 'sample1': Action
var sample2 = execute1(myActionB);
// type of 'sample2': ActionB
var sample3 = execute2(myActionA);
// type of 'sample3': Action
var sample4 = execute2(myActionB);
// type of 'sample4': Action
As you see, without Typed parameters the type is always inferred from as Action. Otherwise it is nicely inferred as the given type (ActionB).
Check out this example: