Skip to content

vue/order-in-components ceases to work when typecasting Vue component #575

Closed
@ffxsam

Description

@ffxsam

Tell us about your environment

  • ESLint Version: 4.19.1
  • eslint-plugin-vue Version: 4.7.1
  • Node Version: 8.10.0

Please show your full configuration:

module.exports = {
  root: true,
  env: {
    node: true,
  },
  globals: {
    describe: true,
    it: true,
    cy: true,
  },
  extends: ['plugin:vue/recommended', '@vue/standard', '@vue/typescript'],
  rules: {
    // Plain JS rules
    // allow debugger during development
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'comma-dangle': ['error', 'always-multiline'],
    semi: ['error', 'always'],
    'space-before-function-paren': ['error', 'never'],
    'no-var': 'error',
    'no-const-assign': 'error',
    // 'no-unused-vars': 'warn',
    'no-await-in-loop': 'error',
    'default-case': 'error',
    eqeqeq: 'warn',
    'no-alert': 'warn',
    'no-console': 'off', //process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'no-unreachable': 'warn',
    'no-else-return': 'warn',
    'no-multi-spaces': 'warn',
    'no-useless-return': 'warn',
    'no-case-declarations': 'error',
    yoda: 'error',
    'no-use-before-define': 'warn',
    camelcase: ['error', { properties: 'never' }],
    'no-mixed-spaces-and-tabs': 'error',
    'no-duplicate-imports': 'error',
    'prefer-const': 'warn',
    indent: 'off',
    'space-before-function-paren': 'off',
    'standard/computed-property-even-spacing': 'off',

    // Extra Vue rules
    'vue/html-closing-bracket-spacing': 'warn',
    'vue/html-closing-bracket-newline': [
      'warn',
      {
        singleline: 'never',
        multiline: 'always',
      },
    ],
    'vue/require-prop-types': 'never', // temporary, till Array junk is fixed
  },
  parserOptions: {
    parser: 'typescript-eslint-parser',
  },
};

What did you do? Please include the actual source code causing the issue.

export default (Vue as VueConstructor<
  Vue &
    AudioState & {
      $refs: {
        audio: HTMLAudioElement;
      };
    }
>).extend({
  data() { /* ... */ },
  props: { /* ... */ },
  // etc.
});

What did you expect to happen?

  • ESLint error about props coming after data

What actually happened? Please include the actual, raw output from ESLint.

  • No warnings/errors

Notes:

If I replace the export line with export default Vue.extend({ then it works as expected. Extending the type interface seems to break this rule.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions