using a UENUM to safely manage and check an object's movement direction

I honestly have struggled to understand how to use UENUM objects because the documentation is really sparse. This is the doc I’m referring to:

This is what it says:



// Old property
    UPROPERTY()
    TEnumAsByte<EThing::Type> MyProperty;

    // New property
    UPROPERTY()
    EThing MyProperty;


I actually don’t even understand what it means to wrap parameter/return type. All I know is that TEnumAsByte is a template that returns the byte corresponding to the Enum Value right?