Должен ли VSCode сообщать об ошибках для файлов TS, которые исключены из компиляции?

Я отправил этот отчет об ошибке в VSCode, поскольку исключил *.spec файлов из компиляции, так как я не хочу включать файлы в дистрибутив NPM.

Я все еще хотел бы видеть, что они правильно компилируются с помощью инструментов VSCode.

В своем нынешнем виде VSCode intellisense сообщает, что импорт, доступный на пути, не может быть импортирован, и это вызывает много ошибок, окрашивает файлы спецификаций проекта в красный цвет и т. д.

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

Я попросил сортировку от VSCode, но пока проблема остается закрытой, и я хотел посмотреть, что другие делают на SO. Это ошибка или заключение в отчете правильное?


person Ole    schedule 10.09.2018    source источник
comment
В первую очередь вопросы, основанные на мнении, не относятся к теме SO.   -  person tkausl    schedule 11.09.2018
comment
Это вопрос о рабочем процессе. Другими словами, если наличие одного файла tsconfig имеет смысл в 80% случаев, независимо от исключений, то это правильный выбор. Групповой вклад в это помогает сделать VSCode лучше для всех нас.   -  person Ole    schedule 11.09.2018


Ответы (1)


IIUC, прямо сейчас VS Code использует один экземпляр языковой службы для файлов, не включенных в tsconfig.json (включая случай, когда tsconfig.json вообще не существует) с параметрами компилятора по умолчанию, а когда tsconfig.json существует, он использует второй экземпляр языковой службы, который жадно загружает все включенные файлы и использует указанные параметры компилятора. Я полагаю, вы предлагаете, чтобы при существовании tsconfig.json первый экземпляр языковой службы использовал параметры компилятора из tsconfig.json, но имел то же поведение при загрузке файлов, что и сейчас. Это было бы незначительным увеличением сложности, и, честно говоря, опыт редактирования файлов, исключенных из tsconfig.json, когда существует tsconfig.json, все равно будет довольно запутанным: некоторые из ваших файлов будут видеть глобальные определения, а другие нет, и «найти все ссылки» будет дать вам частичные результаты. Ваше предложение кажется мне приемлемой альтернативой статус-кво, но я не понимаю, почему вы боретесь за него с командой VS Code, а не просто создаете два файла tsconfig.json, что является явным и дает вам унифицированный опыт редактирования, который вы на самом деле хочу. (Или вы предлагали создать единую языковую службу, которая игнорирует исключения и с готовностью загружает все файлы .ts(x?) в каталоге проекта? Я совершенно уверен, что это не сработает, поскольку во многих сценариях это вызовет проблемы.)

person Matt McCutchen    schedule 10.09.2018
comment
Привет Мэтт - я понимаю, что вы говорите. VSCode интерпретирует файлы как полностью исключенные из проекта в соответствии с параметром exclude в tsconfig, и я просто хочу исключить вывод файла в мой каталог dist. Я все еще думаю, что побочный эффект, когда VSCode начинает рисовать ошибки по всему проекту, неверен. Он должен использовать тот же файл tsconfig и для исключенных файлов, и если автор хочет другого поведения, он должен настроить его. Другими словами, нам нужно только создать еще один файл tsconfig, это абсолютно необходимо, а не просто взломать ... - person Ole; 11.09.2018
comment
вокруг вопроса. VSCode не является частью машинописного текста, поэтому, если мы хотим, чтобы файлы были исключены из intellisense, предоставляемого VSCode, я думаю, что это следует сделать в локальных файлах конфигурации VSCode, иначе вся конфигурация в tsconfig должна быть применена к файлам ts. - person Ole; 11.09.2018
comment
Я могу представить противоположный аргумент: почему VS Code применяет параметры компилятора из моего tsconfig.json к моему Gulpfile.ts, когда он явно исключен, потому что эти параметры имеют смысл только для моих обычных исходных файлов? И есть еще случаи, которые следует учитывать: если в корне рабочей области нет tsconfig.json, но есть один в подкаталоге, применяется ли он к исключенным файлам за пределами этого подкаталога? Но это обсуждение кажется спорным, потому что вам не удастся убедить команду VS Code, и вы, вероятно, захотите унифицированного поиска всех ссылок, для чего в любом случае требуются два файла tsconfig.json. - person Matt McCutchen; 11.09.2018
comment
Возможно, мы хотим импортировать файлы проекта в Gulpfile.ts, которые разрешаются с помощью настройки пути в tsconfig.json? Кажется, это имеет смысл. Мы хотим исключить Gulpfile.ts из вывода dist, но по-прежнему иметь возможность разрешать файлы, специфичные для проекта, внутри него. Возможно, вы правы, убеждая команду. Я просто хочу, чтобы разговор / рациональность имел смысл, а подход к настройке имел смысл. - person Ole; 11.09.2018
comment
В конечном счете, я думаю, что VSCode должен привести примеры случаев, когда юзабилити страдает. Если таких случаев нет, то VSCode не должен заставлять нас создавать дополнительные файлы. Я думаю, что ваш Gulpfile.ts пример - отличный материал для размышлений, но не повредит ли удобству использования, если VSCode применит настройки tsconfig.json к файлу в целом? И ответ, вероятно, да, есть сценарии, но эти сценарии происходят только в 1% случаев. Если это так, то мы должны приложить дополнительные усилия только в том случае, если сценарий произойдет. - person Ole; 11.09.2018
comment
В конечном счете, я думаю, что команда VSCode должна работать над вещами, которые стоят их времени, и жалоба одного пользователя, когда существует простой обходной путь, не является достаточным доказательством того, что они должны исследовать это дальше. - person Matt McCutchen; 11.09.2018
comment
Возможно, вы правы (я определенно думаю, что вы очень хороши в этом деле и очень уважаете вас), но за короткий период времени, когда проблема существовала, уже был один другой пользователь, который также сказал, что это вызывает проблемы у него. . Таким образом, мы не очень хорошо понимаем, сколько людей затронуто этим, потому что проблема была закрыта сразу же. Они могли оставить его открытым и позволить ему собирать мёд, и тогда у нас было бы лучшее представление о том, как это влияет на пользователей. Я не говорил, что хочу, чтобы это было исправлено немедленно, просто было бы неплохо, чтобы это было исправлено в конце концов. - person Ole; 11.09.2018
comment
В наши дни большинство людей недовольны изучением Javascript: .com/ И еще один файл tsconfig, который нужно настроить, чтобы правильно опубликовать проект, просто добавляет к общему стеку миллионов других вещей, которые нам нужно изучить... Прямо сейчас мой проект отлично работает и отлично компилируется. , но если кто-нибудь когда-нибудь проверит это, VSCode покажет миллион ошибок в журнале консоли, которые не являются реальными. - person Ole; 11.09.2018
comment
Не думаю, что было неправильно закрыть тему. Он сообщает, что ваше предложение вряд ли будет принято, но возможно, учитывая достаточное количество отзывов пользователей; Команда VS Code определяет порог закрытия, который делает категоризацию открытых/закрытых наиболее полезными для них. Если затронуты дополнительные пользователи, я ожидаю, что они все равно поднимут вопрос или прокомментируют его или откроют новый вопрос, если текущий будет автоматически заблокирован ботом, таким как репозиторий TypeScript. На данный момент мне даже не ясно, что у Митчеллсимоенса была такая же проблема. - person Matt McCutchen; 11.09.2018
comment
Хорошая точка зрения. Что ж, у нас есть это здесь и там сейчас, поэтому, если кому-то нужно понять проблему, они могут увидеть ее здесь и, возможно, предоставить больше отзывов. Лично я считаю, что исключение из VSCode следует настраивать отдельно, потому что это вызывает неожиданный побочный эффект в инструментарии. Одну минуту все работает нормально, а потом вдруг все исключаемые файлы становятся красными... Я не думаю, что это задокументировано... Итак, сначала мы должны распознать, что происходит, а затем мы должны исследовать обходной путь... - person Ole; 11.09.2018