web-dev-qa-db-fra.com

Comment TypeScript 100.0% est-il écrit en TypeScript?

Dans référentiel TypeScript sur GitHub et selon GitHub, le référentiel ne comprenait que 100,0% TypeScript (fichiers. Ts)

enter image description here

Comment ça marche? et comment TypeScript peut se compiler en JavaScript tout seul?

52
M98

Ceci est appelé amorçage du compilateur et est courant pour un certain nombre de raisons, dont la langue que vous écrivez est souvent la plus appropriée pour comprendre les concepts que vous implémentez dans la langue. tu écris ...

Si vous regardez l'article, la plupart des langages principaux ont des compilateurs auto-hébergeurs (C, C++). Cela signifie que vous exécutez une grande quantité de code via votre nouveau compilateur, ce qui est un bon test de fonctionnalité. Dans le cas habituel, vous écrivez un compilateur parce que vous voulez une nouvelle langue avec certains avantages par rapport à votre langue actuelle, il est donc logique de pouvoir profiter de ces avantages pendant l'écriture du compilateur.

La toute première passe devra être écrite dans un langage existant, mais une fois que vous avez un compilateur, vous pouvez l'utiliser pour compiler la prochaine révision et ainsi de suite. Évidemment, cela limite votre compilateur à n'utiliser que les fonctionnalités de n-1 révision, mais puisque vous contrôlez le compilateur, cela devrait être un problème mineur. Citant Wikipédia:

Les principales parties du clang du compilateur C++ ont été écrites dans un sous-ensemble de C++ qui peut être compilé à la fois par g ++ et Microsoft Visual C++.

Puisque TypeScript est un sur-ensemble de JavaScript, le compilateur pourrait (théoriquement) être écrit dans la syntaxe partagée et compiler sous l'un ou l'autre. Je ne pense pas que ce soit le cas ici, mais la relation vous donne un bon langage de démarrage pour le compilateur initial.

58
ssube

TypeScript est auto-hébergé et maintient une version Last-Known-Good (LKG) de lui-même pour compiler la prochaine version. Actuellement (30/08/2016), cette version se trouve dans le répertoire lib .

18
daragua