Есть ли способ сделать редактор JS в идентификаторах меток VS Code с неизвестным/любым типом (которые только предполагаются)?

При вставке/перемещении кода в JS было бы полезно иметь возможность находить функции/переменные, тип которых неизвестен. Их тип часто неизвестен из-за отсутствия кода (или определений типов, которые вы можете добавить в TS/JSDoc).

В настоящее время мне приходится наводить указатель мыши на каждый идентификатор, чтобы проверить, имеют ли они известный тип. Моя текущая тема — Monokai, и она не делает этого различия.

Интересно, существует ли какая-либо настройка/тема/расширение, позволяющая легко увидеть, когда существование идентификатора предполагается только без гарантии (например, внешняя глобальная переменная или свойство). Я имею в виду что-то, что заставило бы эти идентификаторы иметь другой цвет или, может быть, маркер подчеркивания информации/предупреждения. Я думаю, что в NetBeans может быть что-то вроде этого, потому что я помню глобальные переменные, имеющие другой цвет.


person geekley    schedule 12.11.2019    source источник
comment
Все функции и переменные в JavaScript имеют неизвестный тип. Если вам нужно то, о чем вы просите, используйте TypeScript или FlowType или что-то в этом роде.   -  person Pointy    schedule 13.11.2019
comment
Хотя объявление переменной, имени функции, объекта или члена является хорошей идеей для будущих программистов, JavaScript не требует этого. У некоторых редакторов есть возможность анализировать во время ввода, но язык и интерпретаторы не заботятся об этом.   -  person PaulProgrammer    schedule 13.11.2019
comment
Да, я знаю, что объявление типов в JS не требуется. Но я использую JSDoc/.d.ts для объявления типов, чтобы убедиться, что у вещей есть ожидаемые типы, потому что я не люблю утиную печать. VSCode хорошо делает выводы, мой вопрос заключается в том, есть ли способ ясно увидеть это в редакторе.   -  person geekley    schedule 13.11.2019


Ответы (2)


когда идентификатор только предполагается, без гарантии - например, внешняя глобальная переменная или свойство

Это больше похоже на то, что вы ищете необъявленные переменные. Это довольно просто благодаря хорошим правилам области видимости в современном JavaScript, и большинство линтеров будут жаловаться (и выделять) на это по умолчанию. Например, возьмем правило no-undef в eslint.

Найдите функции/переменные, тип которых неизвестен. Их тип часто неизвестен из-за отсутствия кода (или определений типов, которые вы можете добавить в TS/JSDoc).

Это больше похоже на машинописный вопрос. Но да, есть инструменты, которые будут жаловаться на переменные, тип которых не был объявлен или не может быть выведен. Подробнее см. Есть ли способ получать предупреждения (не ошибки) о несоответствии noImplicitAny?.

person Bergi    schedule 12.11.2019

Спасибо Берги за то, что указал мне правильное направление!

Что мне нужно было сделать, чтобы получить эти ошибки в JS, так это просто добавить jsconfig.json с .compilerOptions.checkJs: true. Например:

{
  "compilerOptions": {
    "noImplicitAny": true,
    "noImplicitThis": true,
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "strict": true,
    "checkJs": true,
    "target": "esnext"
  }
}
person geekley    schedule 13.11.2019