First off, great library!
The problem is, that .shape().loose is not applicable with the latest version of Vue.
in this line this is undefined: https://github.com/dwightjack/vue-types/blob/master/src/index.js#L215
Here is the property validation of Vue:
https://github.com/vuejs/vue/blob/01151ce3fa3cb346443d086332ec053c389ee619/src/core/util/props.js#L123
The this context is lost, because the validator function gets called as validator(), not prop.validator.
I am not sure how to fix this using the isLoose flag. A possible workaround is to use isLoose as a second parameter or by introducing looseShape({}).