2016-07-29 10 views
11

Ich verwende TypeScript mit der "noImplicitAny": true Option in meinem tsconfig.json festgelegt.Erlaube implizite alle nur für Definitionsdateien

I typings bin mit Typ-Definitionsdateien zu verwalten und bin auch sie einen Referenzpfad-Direktive in der Einstiegspunkt meiner App:

/// <reference path="./typings/index.d.ts" /> 

Das Problem, dass die Dateien auf implizite verlassen einige der Definition ist jede , jetzt bekomme ich eine Menge Kompilierfehler von .d.ts Dateien.

Gibt es eine Möglichkeit zum Deaktivieren/Stummschalten dieser Fehler, z. B. basierend auf dem Pfad oder Dateityp?

+0

Haben Sie eine zweite tsconfig.json Datei mit '„noImplicitAny“zu setzen versucht: false' zu ​​einer' Typisierung/'Verzeichnis? – Terite

+0

Eine andere mögliche Lösung könnte sein, Ihre 'tsconfig.json'-Datei in dem Verzeichnis zu platzieren, das Ihre Quellen enthält, z. 'src /' anstatt es in das Projektstammverzeichnis zu stellen. – Terite

+0

@Terite danke für die Vorschläge. Ich habe versucht, eine zweite "tsconfig.json" -Datei in das 'typings'-Verzeichnis hinzuzufügen, aber ich bekam immer noch Fehler. Ich würde es vorziehen, mein Projekt nicht zu restrukturieren, aber ich bin mir nicht sicher, ob das trotzdem funktionieren würde, da die '.d.ts'-Dateien immer noch enthalten wären. –

Antwort

11

Mit der Veröffentlichung von Typoskript 2.0, die skipLibCheck Compiler-Option wurde eingeführt, und es sollte Ihr Problem lösen:

Typoskript 2.0 eine neue --skipLibCheck Compiler-Option hinzufügt, die Typprüfung von Meldedateien (Dateien mit der Erweiterung verursacht .d.ts) übersprungen werden. Wenn ein Programm große Deklarationsdateien enthält, verbringt der Compiler viel Zeit mit Typüberprüfungsdeklarationen, von denen bereits bekannt ist, dass sie keine Fehler enthalten, und die Kompilierungszeiten können durch das Überspringen von Deklarationen von Deklarationsdateitypen erheblich verkürzt werden.

Da Deklarationen in einer Datei die Typprüfung in anderen Dateien beeinflussen können, werden einige Fehler möglicherweise nicht erkannt, wenn --skipLibCheck angegeben wird. Wenn beispielsweise eine Nichtdeklarationsdatei einen in einer Deklarationsdatei deklarierten Typ erweitert, können Fehler auftreten, die nur gemeldet werden, wenn die Deklarationsdatei überprüft wird. In der Praxis sind solche Situationen jedoch selten.

Es standardmäßig false und können in Ihrem tsconfig.json aktiviert werden:

{ 
    "compilerOptions": { 
     "skipLibCheck": true, 
     ... 
    }, 
    ... 
} 
0

, wenn Sie auf einer einzigen Zeile importieren implizit erlauben müssen Sie //@ts-ignore Attribut direkt vor dem untypisierten Modul Import verwenden können es wird ignorieren die implizite jede (sowie alle anderen möglichen Fehler der folgenden Zeile, so liegt es an Ihnen, es richtig zu machen) aber es ist todleich und löst mir eine Menge Kopfschmerzen in kürzester Zeit

zum Beispiel für Schriftart awesome 5 ich habe

//@ts-ignore 
import fontawesome from '@fortawesome/fontawesome'; 
//@ts-ignore 
import regular from '@fortawesome/fontawesome-free-regular'; 

fontawesome.library.add(regular); 

plus, es funktioniert gut mit webpack

Verwandte Themen