Was sind die optimalen TypeScript- tsconfig
Einstellungen für die Ausgabe von Code, der auf Node.js 12 ausgeführt wird?
quelle
Was sind die optimalen TypeScript- tsconfig
Einstellungen für die Ausgabe von Code, der auf Node.js 12 ausgeführt wird?
Ab Node.js 12.0.0
werden 100% von ES2019 unterstützt. Wenn Sie wissen, dass Sie auf diese oder eine neuere Version abzielen, sieht die optimale Konfiguration folgendermaßen aus:
"module": "commonjs"
Node.js ist auf dem Weg, ES-Module hinzuzufügen, aber jetzt müssen wir uns an CommonJS halten.
"target": "es2019"
Dies teilt TypeScript mit, dass es in Ordnung ist, JavaScript- Syntax mit Funktionen von ES2019 auszugeben. In der Praxis bedeutet dies, dass beispielsweise Objekt-Rest / Spread-Eigenschaften und asynchrone / warten-Syntax ausgegeben werden, anstatt eine Polyfüllung einzubetten.
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]
Dies teilt TypeScript mit, dass es in Ordnung ist, Funktionen und Eigenschaften zu verwenden, die in ES2019 oder früher eingeführt wurden. In der Praxis bedeutet dies, dass Sie zB String.prototype.trimStart
und verwenden können Array.prototype.flat
.
Zusätzlich zu ES2019 unterstützt Node.js 12 auch BigInt
& matchAll
von ES2020, daher enthalten wir die zusätzlichen Definitionen von ES2020.
Die vollständige Konfiguration wäre also:
{
"compilerOptions": {
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"],
"module": "commonjs",
"target": "es2019"
}
}
Wenn Sie auf Node.js 12.9.0
oder eine neuere"lib": ["es2020"]
Version abzielen , können Sie einfach angeben , dass diese Version alle neuen Funktionen und Eigenschaften unterstützt, die in ES2020 eingeführt wurden. Die neue JavaScript- Syntax wird jedoch nicht unterstützt , sodass Sie weiterhin aktiv bleiben müssen "target": "es2019"
.
Die vollständige Konfiguration wäre also:
{
"compilerOptions": {
"lib": ["es2020"],
"module": "commonjs",
"target": "es2019"
}
}
Wenn Sie Node.js 14 ausführen, können Sie meine ähnliche Antwort für Node.js 14 hier sehen
Wenn Sie Node.js 10 ausführen, können Sie meine ähnliche Antwort für Node.js 10 hier sehen
Wenn Sie Node.js 8 ausführen, können Sie meine ähnliche Antwort für Node.js 8 hier sehen
"target"
beeinflussen"lib"
in irgendeiner Weise , wenn"lib"
in der Konfiguration leer gelassen? Wenn ich nur habe,"target": "es2020"
was macht"lib"
standardmäßig? Dies war für mich immer eine Quelle des Geheimnisses.