2016-12-04 4 views
1

Ab Typoskript 2.0, ist es bevorzugt, dass Bibliotheken Autoren Schiff .d.ts Dateien neben dem Bibliothekscode, so dass, wenn Devs, dass die Bibliothek über npm installieren, dann bekommen sie sowohl die Bibliothekscode und die TS-Typings dafür.Fall, wenn Typoskript Deklarationsdatei mit einer Bibliothek ausgeliefert wird Features von neuerer Typoskript

Meine Frage ist: Was in einem Fall, wenn ich TS 2.0, und die für die Bibliothek foo-bar.js geschrieben Typings verwenden Funktionen aus einer neueren TS-Version?

Es ist derzeit kein Problem, denke ich, denn die einzige stabile 2.x-Version ist 2.0. Aber stellen Sie sich vor, TS 2.2 wird mit einem neuen Schlüsselwort/Operator/Typ-Support ausgeliefert und die Autoren der Bibliotheken beginnen damit, sie in den .d.ts Dateien zu verwenden, die sie mit ihrem Code liefern. Würde das verhindern, dass ich diese Bibliotheken benutze, wenn ich TS nicht auf die neueste Version in meinem eigenen Projekt aktualisiere (prevent = Syntaxfehler in 3rd Party .d.ts Dateien während der Kompilierung)?

+1

Sie können npm sagen, welche Version zu installieren ist, nehmen Sie also einfach die Version, die eine ts-Version verwendet, die gleich oder niedriger ist als die, die Sie verwenden. Es ist nicht anders als mit anderen Sprachen. Wenn ich nicht Java 8 verwende, kann ich keine Bibliotheken verwenden, die für Java 8 geschrieben wurden. –

Antwort

0

Das ist eine gute Frage und hängt weitgehend davon ab, wie engagiert die TS-Ingenieure für die Vorwärtskompatibilität sind. Im Allgemeinen streben Ingenieure beim Kompilieren von Compilern nach Rückwärtskompatibilität, was bedeutet, dass alter Code immer noch von einem neuen Compiler kompilierbar ist. In ähnlicher Weise können ältere Bibliotheken im Allgemeinen mit neueren Versionen des Compilers verknüpft werden.

Dies ist eine allgemeine Faustregel, aber manchmal werden Compiler-Autoren die Kompatibilität aus guten (oder schlechten) Gründen brechen.

Als weitere allgemeine Faustregel ist die Vorwärtskompatibilität jedoch kein großes Problem. Der Grund dafür ist, dass Sie, wenn Sie Code-kompilierte (dh .d.t.ts-Dateien) mit einer neueren Version eines Compilers verwenden möchten, von der neuen Version erwartet werden. Diese Einschränkung ist schlecht für Benutzer, die die Freiheit haben wollen, beliebige Bibliotheken zu mischen und zu vergleichen, aber sie sind schlecht für Compilerautoren, die die Freiheit haben wollen, neue Funktionen in ihrem kompilierten Code zu verwenden.

Die TS-Ingenieure im Allgemeinen sind sehr durchdacht und

So wahrscheinlich sind, ist dies ein langer Weg, um Ihre Frage zu beantworten, dass es wahrscheinlich ist, dass Sie Ihren Compiler, um ein Upgrade benötigen, um zu Bibliotheken, die kompilierten verlinken neuer Compiler.

+0

Ok, danke für deine Antwort. Ich war nur neugierig, welche Möglichkeiten ich habe, wenn ich es mir nicht leisten kann, TS zu aktualisieren, während einige meiner Abhängigkeiten von Drittanbietern entscheiden, die neueste und beste Version von TS die ganze Zeit zu verwenden (ohne die Hauptversion ihres Codes zu erhöhen). Ich schätze, ich muss mich darauf verlassen, dass andere Entwickler die TS-Zielgruppe, auf die sie abzielen, aufmerksam verfolgen. Will sehen wie es geht. Danke noch einmal. –