Разрешить неявное использование только для файлов определений
Я использую TypeScript с опцией "noImplicitAny": true
, установленной в моем tsconfig.json
.
Я использую typings
для управления файлами определения типов и включаю их, используя директиву ссылочного пути в точке входа моего приложения:
/// <reference path="./typings/index.d.ts" />
Проблема в том, что некоторые файлы определений полагаются на неявные, поэтому теперь я получаю много ошибок компиляции из .d.ts
файлов.
Есть ли способ отключить/отключить эти ошибки, например, на основе пути или типа файла?
Ответы
Ответ 1
С выпуском TypeScript 2.0 была представлена опция компилятора skipLibCheck
, и она должна решить вашу проблему:
TypeScript 2.0 добавляет новый параметр компилятора --skipLibCheck
, который вызывает проверку типов файлов декларации (файлы с расширением .d.ts
) для пропуска. Когда программа включает в себя большие файлы декларации, компилятор тратит много объявлений на проверку типов времени, которые, как известно, не содержат ошибок, а время компиляции может быть значительно сокращено путем пропуска проверки типов файлов деклараций.
Так как объявления в одном файле могут влиять на проверку типов в других файлах, некоторые ошибки могут не обнаруживаться при указании --skipLibCheck
. Например, если файл без декларации увеличивает тип, объявленный в файле декларации, могут возникнуть ошибки, которые будут отображаться только при проверке файла декларации. Однако на практике такие ситуации встречаются редко.
По умолчанию используется значение false
и может быть включено в tsconfig.json
:
{
"compilerOptions": {
"skipLibCheck": true,
...
},
...
}
Ответ 2
если вам нужно разрешить неявное в одной строке импорта, вы можете использовать атрибут //@ts-ignore
прямо перед импортом неизученного модуля
он будет игнорировать неявный какой-либо (а также все другие возможные ошибки следующей строки, так что вам решать, как правильно)
но он мертв легко и решает меня много головной боли в мгновение ока
например, для шрифта awesome 5 я have
//@ts-ignore
import fontawesome from '@fortawesome/fontawesome';
//@ts-ignore
import regular from '@fortawesome/fontawesome-free-regular';
fontawesome.library.add(regular);
плюс, он отлично работает с webpack