JS.VUE.REQUIRE.PROP.TYPE.CONSTRUCTOR

Require prop type to be a constructor

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.

{'vue/require-prop-type-constructor': ['error']}

Copy
<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

  • Guide - Prop Validation (https://v3.vuejs.org/guide/component-props.html#prop-validation)

The content on this page is adapted from the ESLint User Guide. Copyright © OpenJS Foundation and other contributors, www.openjsf.org. All rights reserved. https://eslint.org/docs/rules/