Как игнорировать поля ввода, когда не используется TypeScript в PhpStorm? - PullRequest
0 голосов
/ 03 марта 2020

В JetBrains PhpStorm 2019.3 я использую JavaScript ES6. Теперь, если я установлю, например, Foundation for Sites и использую его со следующим кодом в файле с именем main. js:

import {Dropdown, DropdownMenu, Accordion} from 'foundation-sites';

Когда CTRL + нажмите на 'foundation-sites', PhpStorm отправляет меня по адресу:

node_modules / foundation-sites / dist / js / foundation.d.ts

, даже если я не использую Машинопись. Ожидаемое поведение будет прыгать в:

node_modules / foundation-sites / dist / js / foundation.es6. js

Я могу изменить это поведение, изменив поле typings в пакете Foundation-sites . json:

-  "typings": "dist/js/foundation.d.ts",
+  "typings": "dist/js/foundation.es6.js",

Однако изменение пакета. json поля в стороннем коде просто для исправления перемещения PhpStorm в неправильный файл кажется неудобным. Как сделать так, чтобы PhpStorm игнорировал ссылки и поля TypeScript, если не используется TypeScript?

1 Ответ

2 голосов
/ 03 марта 2020

Нет способа заставить IDE игнорировать поле typings - оно использует файлы определений TypeScript для включения дополнения кода для библиотечных методов. Обычно для навигации используются следующие правила:

  • Если определения типов установлены в папке node_modules/@types, IDE пытается перейти к источникам JavaScript библиотеки при использовании Ctrl+click. Обратите внимание, что это работает только для символов, которые определены как классы, переменные или функции (а не интерфейсы или типы) в файле .d.ts.
  • Если определения типов доступны внутри модуля, IDEA не индексирует источник JavaScript по умолчанию и, следовательно, не может перейти к ним. Чтобы проиндексировать эти файлы, вам нужно выбрать Включить Javascript Файлы из контекстного меню папки модуля.

Хуже всего то, что, хотя foundation-sites связывает наборы с это значит, что эти наборы неверны (см. https://github.com/foundation/foundation-sites/issues/11653 и связанные заявки), поэтому IDEA не может сопоставить импорт ES6 с интерфейсами из foundation.d.ts.

Единственный обходной путь, который я могу подумайте о комментировании "typings": "dist/js/foundation.d.ts", в package.json - тогда IDEA будет использовать объявления из foundation.es6.js для завершения и навигации

...