но вторая его версия пишется на TypeScrip
Какая разница на чем его пишут, если вы можете писать на чем захотите.
Давайте проясним. TypeScript это ES6/ES7-stage1 + информация о типах. То есть если вы знаете ES6/ES7-stage1 то вы автоматически знаете TypeScript (добавится только информация о типах и некоторые нюансы, но в целом они строго следует стандарту).
То есть вот это валидный TypeScript:
class Foo {
bar = 'default property value';
constructor(untypedArg) {
this.foobar = untypedArg;
}
}
Одновременно с тем что это валидный TypeScript код это так же валидный код с точки зрения ES (с учетом драфтов находящихся в stage1, вроде
пропертей для объектов)
Это не Dart, который является другим языком. Это надстройка над JS и не более, кроме возможности (опциальной) декларации типов - там ничего больше нет. Но зато для больших проектов эта информация позволяет избавиться от кучи багов.