97 votes

Paramètres TypeScript tsconfig pour Node.js 12 ?

Quel est l'optimum TypeScript tsconfig les paramètres de sortie du code qui va être exécuté sur Node.js 12 ?

256voto

Linus Unnebäck Points 1855

A partir de Node.js 12.0.0 , 100% de l'ES2019 est supporté. 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 devons nous en tenir à CommonJS.

  • "target": "es2019"

    Cela indique à TypeScript qu'il est possible d'afficher du JavaScript. syntaxe avec les fonctionnalités de l'ES2019. En pratique, cela signifie qu'il produira, par exemple, les propriétés de repos/étalement des objets et la syntaxe async/await au lieu d'intégrer un polyfill.

  • "lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]

    Cela indique à TypeScript qu'il est possible d'utiliser les éléments suivants fonctions et propriétés introduite dans ES2019 ou une version antérieure. En pratique, cela signifie que vous pouvez utiliser par exemple String.prototype.trimStart y Array.prototype.flat .

    En plus de ES2019, Node.js 12 supporte également BigInt & matchAll d'ES2020, nous incluons donc 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 visez Node.js 12.9.0 ou plus récent vous pouvez simplement spécifier "lib": ["es2020"] car cette version prend en charge toutes les nouvelles fonctions et propriétés introduit dans l'ES2020. Il ne prend pas en charge le nouveau JavaScript syntaxe cependant, donc vous devez toujours rester sur "target": "es2019" .

La configuration complète serait donc :

{
  "compilerOptions": {
    "lib": ["es2020"],
    "module": "commonjs",
    "target": "es2019"
  }
}

Si vous exécutez Node.js 16, vous pouvez voir ma réponse similaire pour Node.js 16 ici

Si vous exécutez Node.js 14, vous pouvez voir mes réponse similaire pour Node.js 14 ici

Si vous exécutez Node.js 10, vous pouvez voir mes réponse similaire pour Node.js 10 ici

Si vous exécutez Node.js 8, vous pouvez voir mes réponse similaire pour Node.js 8 ici

25voto

rramakrishnaa Points 403

TL:DR

TypeScript maintient un mapping de target, module et lib correspondant à la version du nœud. Vous pouvez le trouver ici https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X