It doesn’t seem like good practice to put functions “of this type” in interfaces.
Also, if you are going to use interfaces in C++, mixing them with Blueprints (UFUNCTIONS (whatever you want)) you are tightly linking Blueprints and C++, which makes decoupling impossible and evidently breaks the functionality of an interface, which is to define a contract.
In plain words, if you use C++, do not use UFUNCTIONS and use virtual, only for C++ code. (By the way, if you have UFUNCTIONS and virtual, I don’t think VS warns you about the error. Rider does).
If you make a mix between them, you are breaking the purpose of an interface.