ESLint активирует опцию уведомления «Объект, возможно, равен нулю».

#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", ...  

Из-за этого тесты игнорируются.