Was macht die tsconfig-Option "lib"?


129

Ich habe ein vorhandenes Projekt mit dieser Zeile in tsconfig.json:

lib:["2016", "DOM"]

Was ist der Zweck davon?

Die einzige Information, die ich finden konnte, ist folgende:

Geben Sie die Bibliotheksdatei an, die in die Kompilierung aufgenommen werden soll. Benötigt TypeScript Version 2.0 oder höher.

Was bedeutet das?


Antworten:


75

Dies ist eine neue Typoskript-2-Funktion, daher fehlt ihr immer noch die Dokumentation. Sie können sie jedoch unter Was ist neu in Typescript 2.0 :

Mit --lib können Sie eine Liste der integrierten API-Deklarationsgruppen angeben, die Sie in Ihr Projekt aufnehmen können. Wenn Sie beispielsweise erwarten, dass Ihre Laufzeit Map, Set und Promise unterstützt (z. B. die meisten immergrünen Browser von heute), geben Sie einfach --lib es2015.collection, es2015.promise an. Ebenso können Sie Deklarationen ausschließen, die Sie nicht in Ihr Projekt aufnehmen möchten, z. B. DOM, wenn Sie mit --lib es5, es6 an einem Knotenprojekt arbeiten.

Es gibt auch eine Liste der API groupsunterstützten und ein sehr kurzes Beispiel in diesem Link.


25
Ich meinte, wenn ich "lib": ["es5"] spezifiziere, bedeutet das einfach, dass ich es5Typen verwenden kann, um mich tsüber den Compiler zu beschweren, oder dass irgendeine Art von Poly-Fills von bereitgestellt wird tsc?
— Max Koretskyi

9
Die verschiedenen Bibliotheken finden Sie hier: github.com/Microsoft/TypeScript/tree/master/lib Dies sind Definitionsdateien, die der Compiler verwendet
— Nitzan Tomer

5
Ich sehe, danke, das bedeutet im Grunde, dass, wenn ich "lib": ["es5"]"dom" spezifiziere und nicht spezifiziere, tscsich über die Verwendung von DOM-spezifischen Methoden beschweren wird, richtig?
— Max Koretskyi

12
Beachten Sie, dass das Einfügen von "es2015.promise" oder was auch immer keine Polyfüllung in Ihren kompilierten Code enthält. Stattdessen benachrichtigen Sie einfach den Compiler, dass Ihr Code Versprechen verwendet, und das sollte in Ordnung sein. Wenn Sie versprochene Polyfills hinzufügen müssen, sollten Sie entweder die Polyfill in Ihren Code importieren oder babel mit der entsprechenden Maschinerie (babel-preset-env) als Post-Step (oder nächsten Loader im Webpack) verwenden
— Dmitrii Sorin

20
Diese Gruppen versprechen dem Compiler: "Bitte beschweren Sie sich nicht über diese APIs. Ich verspreche, dass der Browser sie unterstützt." Beispiel: Wenn Sie Polyfills hinzufügen es6und nicht einschließen , werden alte Browser ersticken.
— Steve Clay
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.