JavaScriptとTypeScriptが混在したプロジェクトを書いているのですが、ESLintのoverrides
で制御しようとしても、TypeScriptにno-undef
が適用されてしまいます。
そのままだと.d.ts
ファイルで別途宣言した型がno-undef
に引っかかってしまいます(TypeScriptのコンパイルは正常に完了しますし、型も正しく認識しています)。なお、変数の宣言忘れはTypeScriptサイドで検知できます(VSCodeだとその場でチェックされる)ので、ESLint側のno-undef
はTypeScriptには不要なのですが、JavaScriptではそのまま使いたい、という状況です。
どのように設定すれば、この状況を解決できるでしょうか?(なお、「.d.ts
を置かず、必要な型は都度import
する」という解決策はありますが、できるだけそれ以外の方法でお願いします)
具体例
typescript
1// some_type.d.ts 2type SomeType = string | number 3 4// error.ts 5 6// ここでSomeTypeにno-undefの指摘が入る 7let value: SomeType = 7;
なお、.d.ts
のほうで、type
をdeclare type
やexport type
に書き換えるなどもやってみましたが、特に状況は変わりませんでした。
.eslintrc.jsonの内容
json
1{ 2 "env": { 3 "browser": true 4 }, 5 "parser": "babel-eslint", 6 "parserOptions": { 7 "sourceType": "script" 8 }, 9 "plugins": [ 10 "react-hooks" 11 ], 12 "extends": [ 13 "eslint:recommended", 14 "plugin:react/recommended" 15 ], 16 "settings": { 17 "react": { 18 "version": "detect" 19 } 20 }, 21 "rules": { 22 // 略(no-undefに関する設定はなし) 23 }, 24 "overrides": [ 25 { 26 "files": ["**/*.ts", "**/*.tsx"], 27 "extends": [ 28 "plugin:@typescript-eslint/eslint-recommended", 29 "plugin:@typescript-eslint/recommended" 30 ], 31 "parser": "@typescript-eslint/parser", 32 "parserOptions": { 33 "sourceType": "script", 34 "project": "./tsconfig.json" 35 }, 36 "plugins": [ 37 "@typescript-eslint" 38 ], 39 "rules": { 40 "no-undef": "off", 41 // 後略 42 } 43 ] 44} 45
ライブラリバージョン
json
1// package.jsonからの抜粋 2{ 3 "@babel/core": "^7.10.0", 4 "@typescript-eslint/eslint-plugin": "^4.3.0", 5 "@typescript-eslint/parser": "^4.3.0", 6 "babel-eslint": "^10.1.0", 7 "eslint": "^7.1.0", 8 "eslint-plugin-react": "^7.20.0", 9 "eslint-plugin-react-hooks": "^4.0.0", 10 "react": "^16.13.1", 11 "typescript": "^4.0.3", 12}
Node 10.x系列
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/05 00:19
2020/10/10 02:05