Коротко — подсветку неиспользуемых переменных в JavaScript даёт не подсветка синтаксиса, а служба языка TypeScript (tsserver). В новых релизах VS Code она может быть отключена/заменена или не выполнять проверку для .js по умолчанию, поэтому переменные не помечаются как неиспользуемые. Плагин, который вы привели (TypeScriptTeam.native-preview), — экспериментальная «native» версия сервиса языка; он может решить проблему, но действительно помечен как экспериментальный.
Что рекомендую сделать (по порядку, коротко):
1) Проверить встроенный плагин
- В Extensions -> введите @builtin и найдите "TypeScript and JavaScript Language Features". Убедитесь, что он включён (Enable).
- В правом нижнем углу VS Code убедитесь, что файл распознан как JavaScript (язык в статус-баре).
2) Включить проверки TypeScript для JS
- В проекте создайте jsconfig.json или tsconfig.json с опциями:
{
"compilerOptions": {
"checkJs": true,
"noUnusedLocals": true,
"noUnusedParameters": true
},
"exclude": ["node_modules"]
}
Либо добавьте в конкретный файл вверху строку // @ts-check для включения проверок в этом файле.
- Можно ещё в настройках workspace установить javascript.implicitProjectConfig.checkJs = true.
3) Альтернатива — ESLint (рекомендую)
- Установите расширение ESLint и настройте правило no-unused-vars — оно надёжно подсвечивает неиспользуемые переменные и даёт больше гибкости (игнорирование переменных, начинающихся с _, и т.д.).
- Пример .eslintrc:
{
"env": { "browser": true, "node": true, "es2021": true },
"parserOptions": { "ecmaVersion": 12, "sourceType": "module" },
"rules": { "no-unused-vars": ["warn", { "args": "none", "varsIgnorePattern": "^_" }] }
}
4) Если хотите пробовать экспериментальный плагин
- TypeScriptTeam.native-preview — можно тестировать, но он экспериментальный. Более «официальная» альтернатива для обновлённого TS — расширение "TypeScript Nightly" (ms-vscode.vscode-typescript-next), оно использует nightly-версию TS для language-features.
5) Диагностика, если всё ещё не работает
- Откройте View → Output → выберите "TypeScript" — посмотрите логи tsserver.
- Нажмите на версию TypeScript в строке состояния — убедитесь, используете встроенную или workspace-версию, и переключитесь при необходимости.
- Проверьте конфликтующие расширения (Flow, Babel-type плагин и т.п.) — временно отключите другие JS/TS расширения.
Вывод: не обязательно ставить экспериментальный native-плагин — чаще всего достаточно включить встроенный "TypeScript and JavaScript Language Features" и включить checkJs (jsconfig.json или // @ts-check) либо настроить ESLint с правилом no-unused-vars. Если хотите, могу помочь открыть ваш проект конфиг JSON/ESLint-конфиг или посмотреть, какие расширения у вас включены и почему подсветка не работает.