The general principal makes a ton of sense: let each line of your code express as much of your intent as possible. That way, when you have a huge codebase, there are all these useful little "hooks" throughout it that will be useful when you need to refactor.
Your codebase will "say" more, and therefore your tools will "know" more, and therefore your tools can do more for you.
Oh, but one more thing. It's very nice if the abstractions you use to do this are resolved down to nothing at runtime. So there's no penalty at runtime for the precision you added to the code. Let the compiler do the hard work so that you can say "Position", but at runtime, the code is as if you had written "Float".
Your codebase will "say" more, and therefore your tools will "know" more, and therefore your tools can do more for you.