Подтвердить что ты не робот

Как TypeScript 100.0% написано в TypeScript?

В TypeScript репозиторий на GitHub, и, согласно GitHub, репозиторий включал только 100.0% TypeScript (.ts файлы)

введите описание изображения здесь

Как это работает? и как TypeScript может самостоятельно скомпилировать JavaScript?

4b9b3361

Ответ 1

Это называется самозагрузкой компилятора и распространено по ряду причин, не в последнюю очередь из которых является язык, который вы пишете, часто является наиболее подходящим языком для понимание концепций, которые вы реализуете на языке, который вы пишете...

Если вы посмотрите на статью, большинство основных языков имеют собственные хостинг-компиляторы (C, С++). Это означает, что вы используете большой код из своего нового компилятора, что является хорошим испытанием функциональности. В обычном случае вы пишете компилятор, потому что вам нужен новый язык с некоторым преимуществом по сравнению с вашим текущим языком, поэтому возможность воспользоваться преимуществами при написании компилятора имеет смысл.

Самый первый проход должен быть написан на существующем языке, но как только у вас есть компилятор, вы можете использовать его для компиляции следующей версии и так далее. Очевидно, это ограничивает ваш компилятор только использованием функций из ревизии n-1, но поскольку вы контролируете компилятор, который должен быть незначительной проблемой. Цитирование Wikipedia:

Основные части clang компилятора С++ были написаны в подмножестве С++, который может быть скомпилирован как g++, так и Microsoft Visual С++.

Поскольку TypeScript является надмножеством JavaScript, компилятор может (теоретически) записываться в общий синтаксис и компилироваться под любым из них. Я не считаю, что случай здесь, но отношения действительно дают вам хороший начальный язык для исходного компилятора.

Ответ 2

Typescript является самостоятельным хостингом и поддерживает версию Last-Known-Good (LKG) для компиляции следующей версии. В настоящее время (30/08/2016) эта версия находится в каталоге lib.