vue/require-prop-type-constructor
require prop type to be a constructor
- ⚙️ This rule is included in all of
"plugin:vue/essential"
,*.configs["flat/essential"]
,"plugin:vue/vue2-essential"
,*.configs["flat/vue2-essential"]
,"plugin:vue/strongly-recommended"
,*.configs["flat/strongly-recommended"]
,"plugin:vue/vue2-strongly-recommended"
,*.configs["flat/vue2-strongly-recommended"]
,"plugin:vue/recommended"
,*.configs["flat/recommended"]
,"plugin:vue/vue2-recommended"
and*.configs["flat/vue2-recommended"]
. - 🔧 The
--fix
option on the command line can automatically fix some of the problems reported by this rule.
📖 Rule Details
This rule reports prop types that can't be presumed as constructors.
It's impossible to catch every possible case and know whether the prop type is a constructor or not, hence this rule restricts few types of nodes, instead of allowing correct ones.
The following types are forbidden and will be reported:
- Literal
- TemplateLiteral
- BinaryExpression
- UpdateExpression
It will catch most commonly made mistakes which are using strings instead of constructors.
<script>
export default {
props: {
/* ✓ GOOD */
myProp: Number,
anotherProp: [Number, String],
myFieldWithBadType: {
type: Object,
default: function () {
return {}
},
},
myOtherFieldWithBadType: {
type: Number,
default: 1,
},
/* ✗ BAD */
myProp: 'Number',
anotherProp: ['Number', 'String'],
myFieldWithBadType: {
type: 'Object',
default: function () {
return {}
},
},
myOtherFieldWithBadType: {
type: 'Number',
default: 1,
},
}
}
</script>
🔧 Options
Nothing.
📚 Further Reading
🚀 Version
This rule was introduced in eslint-plugin-vue v5.0.0