const Vue = require('vue'); const validator = { created() { const props = this.$options.props; const invalidProps = []; for (prop in props) { const isObject = typeof props[prop] === 'object'; const isRequired = props[prop].required; const isNotDefined = this[prop] === undefined; if (isObject && isRequired && isNotDefined) invalidProps.push(prop); } if (invalidProps.length > 0) { const required = invalidProps.join(', '); throw new Error(`Required properties not found [${required}]`); } }, props: ['isPreview'] }; Vue.mixin(validator);