#javascript #typescript #eslint
Вопрос:
По какой-то причине у меня .eslintrc.json
есть какой-то вариант или отсутствует какой-то вариант, чтобы поймать предупреждение
Объект, возможно, «нулевой»
Что мне нужно изменить, чтобы eslint уведомил меня об этом предупреждении?
ВАЖНО, что это относится к моим модульным тестам, поэтому добавление strictNullChecks
не работает для моего проекта, поэтому я спросил, есть ли у eslint возможность для этого.
{ "settings": { "react": { "version": "latest" } }, "env": { "browser": true, "es2021": true }, "extends": ["eslint:recommended", "plugin:react/recommended", "plugin:@typescript-eslint/recommended", "prettier"], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaFeatures": { "jsx": true }, "ecmaVersion": 12, "sourceType": "module" }, "plugins": ["react", "@typescript-eslint"], "rules": { "@typescript-eslint/no-inferrable-types": "off" }, "ignorePatterns": ["dist/*"] }
Мой tsconfig.json
{ "exclude": ["lib/**/*.spec.tsx", "lib/**/*.stories.tsx", "lib/**/*.styles.tsx", "settings/**/*", "dist/**/*"], "compilerOptions": { "skipLibCheck": true, "target": "es5", "lib": ["es5", "dom"], "jsx": "react", "declaration": true, "declarationMap": true, "sourceMap": true, "outDir": "dist", "rootDirs": ["lib"], "strict": true, "moduleResolution": "node", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strictNullChecks": true } }
Комментарии:
1. Это вещь для машинописи, вы должны включить ее
tsconfig.json
(строгая опция).
Ответ №1:
В файле tsconfig.json в разделе «Операции компилятора» вы хотите установить для параметра «Строгие проверки» значение «true»:
{ "compilerOptions": { "strictNullChecks": true, } }
Это заставит typescript предупреждать вас, когда значение может быть равно нулю. Я не думаю, что ты сможешь заставить eslint сделать это за тебя.
Комментарии:
1. Но этот фрагмент кода находится в моих модульных тестах, так что… Когда я создаю свой проект, который все равно работает. Вот почему я попросил решение eslint
Ответ №2:
ESLint не может удалять ворс или предупреждать о типах, только typescript может это сделать.
Вы хотите иметь 2 tsconfig.json
флеса, tsconfig.test.json
и tsconfig.json
Это tsconfig.json
должно быть похоже:
{ ... "compilerOptions": { "strictNullChecks": true, } }
и tsconfig.test.json
это должно быть похоже:
{ "extends": "./tsconfig.json", ... "compilerOptions": { "strictNullChecks": false, } }
Таким образом, проверка нуля скрипта не будет проверяться во время тестового запуска.
Комментарии:
1. Я хочу, чтобы меня предупредили о проверке null в моих тестах, и у меня уже есть строгие проверки true в моих
tsconfig.json
2. Вас нельзя предупредить о возможных пустых объектах. ESLint не выполняет проверку типов, поэтому у него нет необходимой информации, чтобы предупредить о возможности ошибки.
Ответ №3:
Проблема была на линии:
"exclude": ["lib/**/*.spec.tsx", ...
Из-за этого тесты игнорируются.