Node.js erhält experimentelle TypeScript-Unterstützung
(github.com/nodejs)Modul: --experimental-strip-types hinzugefügt
-
TypeScript-Dateien können in Node.js ausgeführt werden
- Mit dem Flag
--experimental-strip-typeslassen sich TypeScript-Dateien ausführen - Node.js wandelt TypeScript-Quellcode in JavaScript-Quellcode um
- Dabei wird keine Typprüfung durchgeführt, sondern die Typen werden entfernt
- Mit dem Flag
-
Motivation
- Es ist wichtig, TypeScript-Dateien ohne externe Abhängigkeiten oder Loader ausführen zu können
- Nutzer sollen
node foo.tsausführen können
-
Bedeutung von Type Stripping
- Type Stripping bedeutet, alle Typen zu entfernen und die Eingabe in ein JavaScript-Modul umzuwandeln
- Beispiel:
const foo: string = "foo";wird zuconst foo = "foo";
-
Warum
@swc/wasm-typescriptgewählt wurde- Wegen der Einfachheit
- Andere Tools erfordern zusätzlich Rust oder Go, aber
@swc/wasm-typescriptbenötigt als kleines Paket nur wasm- und js-Dateien - Es wird auch in Deno verwendet und gilt daher als vertrauenswürdig
-
Einschränkungen
- TypeScript-spezifische Funktionen wie Enums oder Namespaces werden nicht umgewandelt
- Imports ohne Dateiendung werden nicht unterstützt
-
Zukünftige Pläne
- Eine Implementierung in der nativen Schicht ist möglich
- Unterstützung für Source Maps könnte hinzugefügt werden
Zusammenfassung von GN⁺
- Es wird eine neue Funktion beschrieben, mit der TypeScript-Dateien in Node.js ausgeführt werden können
- TypeScript-Dateien werden zur Ausführung in JavaScript umgewandelt, ohne dass eine Typprüfung erfolgt
- Dadurch können Nutzer TypeScript-Dateien ohne externe Abhängigkeiten ausführen, was die Entwicklungsumgebung vereinfacht
- Die Funktion wurde mit
@swc/wasm-typescriptimplementiert; künftig wird auch eine Implementierung in der nativen Schicht erwogen - Das kann für Projekte nützlich sein, die TypeScript und JavaScript gemischt verwenden
1 Kommentare
Hacker-News-Kommentare
Das Entfernen von TypeScript-Typen ist ohne die TypeScript-Syntax nicht möglich. Type Stripping ist keine Operation auf Token-Ebene, und die TypeScript-Syntax verändert sich ständig.
foo < bar & baz > ( x )in TypeScript 1.5 anders interpretiert.Wenn Node.js TypeScript-Dateien direkt ausführen könnte, müsste der TypeScript-Compiler keine Typen entfernen und sie nicht in JavaScript umwandeln.
Ich frage mich, wie das NPM-Ökosystem reagieren wird, wenn dieses Feature zum Standard wird.
engine: nodejs >= 25in diepackage.jsonschreibt und den Build-Schritt weglässt.dist/.cjsbereitstellen..ts-Dateien akzeptiert, könnte der Transpiling-Schritt entfallen.Es wäre ein großer Gewinn, wenn Node Typen in JS untersuchen könnte.
Die Developer Experience (DX) von Bun ist in diesem Bereich beispiellos und deckt die meisten Anwendungsfälle ab.
importkeine Erweiterungen verlangt werden, undtsclässt sich nicht so konfigurieren, dass.js-Erweiterungen automatisch hinzugefügt werden.Ich mag TypeScript sehr und wünsche mir schon lange eine TypeScript-Runtime.
Mein Lieblingsfeature von deno wird direkt in Node übernommen.
esbuildzu installieren.Das war ein sehr wichtiger Monat für Node.
node:sqlitehinzugefügt, und jetzt kommt TypeScript-Unterstützung dazu.Ich bin der Autor des PR, AMA.
Ich habe vor langer Zeit angefangen, Node.js für Backend-Arbeit zu verwenden, und es bot viele Vorteile gegenüber PHP.