Les options target et lib et leur interaction avec les fonctionnalités prises en charge dans le code source me laissent perplexe. J'ai l'impression que la documentation doit être un peu améliorée et je pose donc la question ici avant de soulever un problème.
J'ai naïvement supposé que target spécifie la version de JS dont le code de sortie a besoin pour s'exécuter (avec l'ajout d'un chargeur de modules). Ainsi, nous pouvons toujours utiliser toutes les fonctionnalités avancées de JS (comme la propagation d'objets) que TS supporte dans notre source et le compilateur génère un code adapté à la cible que nous spécifions. Je suppose qu'il avait des polyfills etc à portée de main et que le code s'exécutait simplement sur la VM cible.
Cependant, la documentation de l'option lib précise que les librairies par défaut dépendent de la cible. Mais, les librairies affectent les types de sources disponibles et donc le code que nous pouvons utiliser. Ainsi, les caractéristiques des sources que nous pouvons utiliser dépendent de la cible. Ce n'est pas ce que j'attendais. Je dois dire que ma compréhension des libs est qu'ils sont des types avec une API différente, bien que les docs ne disent pas vraiment ce qu'ils sont.
Je constate qu'il y a des caractéristiques du langage qui ne dépendent pas des types et d'autres qui en dépendent. Cependant, il n'est pas clair si cela fait partie de la raison de cette situation.
Quelqu'un peut-il clarifier ce point ?
Une question secondaire est de savoir pourquoi il existe à la fois une librairie ES6 et une librairie ES2015 alors qu'elles sont habituellement documentées comme étant la même chose.
merci