網站搜尋

typescript - Vue 中已使用的接口顯示 Eslint no-unused-vars 錯誤


我正在使用 Vue 與 Vue CLI 和 TypeScript。
我從 vuex 文件匯入了 interface,並將它用於 mapState 的類型註解。
但是 eslint 顯示我一個錯誤。

'State' is defined but never used. eslint(no-unused-vars)

程式碼

import { Component, Vue } from 'vue-property-decorator';
import { mapState } from 'vuex';
import { State } from '@/store/index';

@Component({
  computed: mapState<State>({
    cards: (state: State) => state.user.cards,
  })
})
export default class Home extends Vue {}

.eslintrc.js

module.exports = {
  root: true,
  env: {
    node: true
  },
  'extends': [
    'plugin:vue/essential',
    'eslint:recommended',
    '@vue/typescript'
  ],
  rules: {
    'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'quotes': ['error', 'single'],
    'semi': ['warn', 'always']
  },
  parserOptions: {
    parser: '@typescript-eslint/parser'
  }
};

我應該怎麼做才能不看到 eslint 錯誤?

答案#1

解決方案:

EsLint 預設的 no-unused-vars 有一個錯誤,會像你解釋的那樣重現。根據我的來源 [1],應該可以透過使用 @typescript-eslint/no-unused-vars 來修正,如下所示:

overrides: [
   // Fix no-used-vars when importing ts types in .vue files
   {
     files: ["*.vue"],
     rules: {
        'no-unused-vars': 'off',
        '@typescript-eslint/no-unused-vars': 'error'
     }
  }
]

來源 [2] 是關於同一主題的另一個問題。在那裡,我的解決方案 [1] 是眾多選項之一。在 [2] 和 [3] 中提到,你需要像這樣安裝 @typescript-eslint/eslint-plugin 和 @typescript-eslint/parser:

npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin

來源:

[1] https://github.com/vuejs/eslint-config-typescript/issues/14

[2] ESLint - 為 TypeScript 配置 "no-unused-vars"

[3] https://khalilstemmler.com/blogs/typescript/eslint-for-typescript/