Использование аргумента компилятора TypeScript 'skipLibCheck' - PullRequest
0 голосов
/ 13 сентября 2018

Я искал дальнейшее объяснение аргумента компилятора TypeScript skipLibCheck , чтобы определить безопасность установки этого значения в true . Наиболее подробное объяснение, которое я нашел, таково:

Новый --skipLibCheck В TypeScript 2.0 добавлена ​​новая опция компилятора --skipLibCheck, которая позволяет пропустить проверку типов файлов объявлений (файлов с расширением .d.ts). Когда программа включает большие файлы объявлений, компилятор тратит много времени на проверку типов объявлений, которые, как известно, уже не содержат ошибок, и время компиляции может быть значительно сокращено путем пропуска проверок типов файлов объявлений.

Поскольку объявления в одном файле могут влиять на проверку типов в других файлах, некоторые ошибки могут не обнаруживаться, если указан параметр --skipLibCheck. Например, если файл без декларации увеличивает тип, объявленный в файле декларации, могут возникнуть ошибки, о которых сообщается только при проверке файла декларации. Однако на практике такие ситуации редки.

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

Конечно, использование этого флага, чтобы обойти это, снижает целостность набора текста вашего приложения?

1 Ответ

0 голосов
/ 23 мая 2019

Кратко перефразируя вопрос:

Неужели [включение skipLibCheck] снижает целостность набора текста вашего приложения?

Я бы согласился, что да, это так,Однако, если альтернативой является приложение, которое не компилируется, то оно становится удобным флагом.

Хотя сам Typescript является достаточно зрелым, сообщество разработчиков текстов еще относительно молодо.Определения типов доступны для множества библиотек и даже некоторых встроенных библиотек машинописи, но они могут быть несовместимы друг с другом по разным причинам.

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

Вы можете найти две библиотеки, определяющие одинаковые типы, но несовместимые.Я импортировал несколько библиотек, которые предоставили свои собственные типы для Polyfill Buffer, и все мое приложение не смогло скомпилироваться из-за их несовместимости.

Включение --skipLibCheck может помочь обойти эти проблемы.Включение этого параметра не позволит Typescript проверять тип всех импортируемых библиотек.Вместо этого Typescript будет только проверять тип кода, который вы используете против этих типов.Это означает, что, пока вы не используете несовместимые части импортированных библиотек, они будут прекрасно компилироваться.

tl; dr, Да, --skipLibCheck ухудшает проверку типов, и в идеале мы бы не сталииспользуй это.Но еще не каждая библиотека предоставляет идеальные типы, поэтому пропустить ее может быть приятно.

...