Quels sont les tsconfig
paramètres TypeScript optimaux pour la sortie du code qui va être exécuté sur Node.js 12?
Quels sont les tsconfig
paramètres TypeScript optimaux pour la sortie du code qui va être exécuté sur Node.js 12?
Réponses:
Depuis Node.js 12.0.0
, 100% de ES2019 est pris en charge. Si vous savez que vous ciblez cette version ou une version plus récente, la configuration optimale ressemblerait à ceci:
"module": "commonjs"
Node.js est sur le point d'ajouter des modules ES, mais pour l'instant nous devrons nous en tenir à CommonJS.
"target": "es2019"
Cela indique à TypeScript que la sortie de la syntaxe JavaScript avec les fonctionnalités d'ES2019 est acceptable. En pratique, cela signifie, par exemple, qu'il restituera les propriétés rest / spread de l'objet et la syntaxe asynchrone / wait au lieu d'incorporer un polyfill.
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]
Cela indique à TypeScript qu'il est acceptable d'utiliser les fonctions et les propriétés introduites dans ES2019 ou version antérieure. En pratique, cela signifie que vous pouvez utiliser par exemple String.prototype.trimStart
et Array.prototype.flat
.
En plus d'ES2019, Node.js 12 prend également en charge BigInt
& à matchAll
partir d'ES2020, c'est pourquoi nous incluons les définitions supplémentaires d'ES2020.
La configuration complète serait donc:
{
"compilerOptions": {
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"],
"module": "commonjs",
"target": "es2019"
}
}
Si vous ciblez Node.js 12.9.0
ou plus récent , vous pouvez simplement spécifier "lib": ["es2020"]
que cette version prend en charge toutes les nouvelles fonctions et propriétés introduites dans ES2020. Cependant, il ne prend pas en charge la nouvelle syntaxe JavaScript , vous devez donc rester "target": "es2019"
.
La configuration complète serait donc:
{
"compilerOptions": {
"lib": ["es2020"],
"module": "commonjs",
"target": "es2019"
}
}
Si vous exécutez Node.js 14, vous pouvez voir ma réponse similaire pour Node.js 14 ici
Si vous exécutez Node.js 10, vous pouvez voir ma réponse similaire pour Node.js 10 ici
Si vous exécutez Node.js 8, vous pouvez voir ma réponse similaire pour Node.js 8 ici
"target"
affecte- t-il"lib"
de quelque façon que ce"lib"
soit s'il est laissé vide dans la configuration? Si j'ai juste à"target": "es2020"
quoi sert"lib"
par défaut? Cela a toujours été une source de mystère pour moi.