pageClass | sidebarDepth | title | description | since |
---|---|---|---|---|
rule-details |
0 |
vue/require-prop-type-constructor |
require prop type to be a constructor |
v5.0.0 |
require prop type to be a constructor
- ⚙️ This rule is included in all of
"plugin:vue/vue3-essential"
,*.configs["flat/essential"]
,"plugin:vue/essential"
,*.configs["flat/vue2-essential"]
,"plugin:vue/vue3-strongly-recommended"
,*.configs["flat/strongly-recommended"]
,"plugin:vue/strongly-recommended"
,*.configs["flat/vue2-strongly-recommended"]
,"plugin:vue/vue3-recommended"
,*.configs["flat/recommended"]
,"plugin:vue/recommended"
and*.configs["flat/vue2-recommended"]
. - 🔧 The
--fix
option on the command line can automatically fix some of the problems reported by this rule.
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>
Nothing.
This rule was introduced in eslint-plugin-vue v5.0.0