Type n integer does not follow from property n integer. So (in a fresh session):
> type(A^n, `^`(name,name));
> type(A^n, `^`(name,integer));
PD. Certainly the type satisfies mechanism shown by Edgardo is a method for the integration of property checking in a type statement environment, being suitable here for both, n asumed integer and 5 type integer:
However, there is an undocumented command `tools/type`, frequently used in the library, and providing the same functionality, that is clearly handier:
So, in my opinion, if it turns out so useful for developers, it would be also for ordinary users if they know it. Then it should be provided as a documented top level command with a "normal" name.