Разрешить неявное использование только для файлов определений

Я использую 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