質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
ESLint

ESLintは、JavaScriptのための構文チェックツール。全検証ルールを自由に on/offでき、独自のプロジェクトに合わせたカスタムルールを容易に設定することが可能。公開されている様々なプラグインを組み込んで使用することもできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

5945閲覧

TypeScriptだけ、ESLintのno-undefを止めたい

maisumakun

総合スコア146063

ESLint

ESLintは、JavaScriptのための構文チェックツール。全検証ルールを自由に on/offでき、独自のプロジェクトに合わせたカスタムルールを容易に設定することが可能。公開されている様々なプラグインを組み込んで使用することもできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

1クリップ

投稿2020/10/02 01:18

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のほうで、typedeclare typeexport 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系列

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

結局、あまりスッキリした改善策でもない感は残りますが、JavaScript用の設定もoverrides側に書くことで、両者の設定を分離することには成功しました。

json

1{ 2 "overrides": [ 3 { 4 "files": ["**/*.ts", "**/*.tsx"], 5 /* TypeScript用の設定 */ 6 }, 7 { 8 "files": ["**/*.js"], 9 /* JavaScript用の設定 */ 10 } 11}

投稿2020/10/05 00:08

maisumakun

総合スコア146063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/10/05 00:19

うまく行ったかと思いきや、TypeScript側で"no-undef": "off"と書いているのに止まらないのは相変わらずでした。
maisumakun

2020/10/10 02:05

結局、効き続けていたのは下位のディレクトリにある.esrintrc.jsonの設定が効いてしまっていたという単純ミスだったことが判明しました。クローズします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問