javascript - Kuinka saada eslint typescript tunnistamaan rajapinnat .d.ts-tiedostoissa?
Minulla on vite 3 + vuetify 3 + vue 3 -projekti volar-laajennuksella. Minulla on rajapintoja määriteltynä joissakin .d.ts-tiedostoissa ja olen asentanut myös eslintin, mutta se valittaa, ettei rajapintoja löydy. Jos poistan käytöstä no undefined -säännön tällä tavalla
"overrides": [
{
"files": ["*.vue"],
"rules": {
"no-undef": "off"
}
}
]
sitten se toimii, eikä TypeScriptillä eikä Volarilla ole ongelmia. Joten se tarkoittaisi, että ESLint ei pysty tunnistamaan sitä.
Paketin riippuvuudet näyttävät tältä:
"dependencies": {
"@azure/msal-browser": "^2.30.0",
"@mdi/font": "^7.0.96",
"@typescript-eslint/eslint-plugin": "^5.40.1",
"eslint-plugin-vue": "^9.6.0",
"pinia": "^2.0.23",
"vue": "^3.2.41",
"vue-i18n": "^9.2.2",
"vue-router": "^4.1.5",
"vuetify": "npm:@vuetify/nightly@next",
"date-fns": "^2.29.3"
},
"devDependencies": {
"@vitejs/plugin-vue": "^3.1.2",
"eslint": "^8.25.0",
"sass": "^1.55.0",
"typescript": "^4.8.4",
"vite": "^3.1.8",
"vite-plugin-eslint": "^1.8.1",
"vite-plugin-vuetify": "^1.0.0",
"vue-cli-plugin-vuetify": "~2.5.8",
"vue-tsc": "^1.0.8"
}
ja minun eslint-konfiguraationi näyttää tältä
{
"env": {
"browser": true,
"es2021": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:vue/essential"
],
"parserOptions": {
"ecmaVersion": "latest",
"parser": "@typescript-eslint/parser",
"sourceType": "module"
},
"plugins": [
"vue",
"@typescript-eslint"
],
"rules": {
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-inferrable-types": "error",
"semi": "error"
},
"ignorePatterns": ["dist/**/*.js"],
"root": true
}
Saamani eslint-virhe on tämä
interface EDB_Matter
'EDB_Matter' is not defined. eslint(no-undef)
Kuinka voin saada eslintin tunnistamaan rajapinnan .d.ts-tiedostosta?
Kiitos
Vastaus #1
Suosittelemme voimakkaasti, ettet käytä
no-undef-lint-sääntöä TypeScript-projekteissa. Sen tarjoamat tarkistukset ovat jo valmiina TypeScriptissä ilman konfiguraatiota - TypeScript tekee tämän vain huomattavasti paremmin.
https://typescript-eslint.io/linting/troubleshooting#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors
TypeScriptiä käytettäessä on suositeltavaa poistaa no-undef-sääntö käytöstä suoraan, koska TypeScript tarkistaa ne jo, eikä sinun tarvitse huolehtia tästä.
Jos todella tarvitset tämän säännön käyttöönoton, lisää nämä rajapinnat eslint-konfiguraatioon:
// .eslintrc.cjs
module.exports = {
globals: {
EDB_Matter: true,
/* ... */
},
}
