Re[14]: А что мешает заменить JS?
От: vdimas Россия  
Дата: 18.03.17 09:41
Оценка: +1
Здравствуйте, Serginio1, Вы писали:

V>>Он еще чуть больше TS чем сам TS. ))

S> Например? Мне интересно.

Ну я-то небольшой специалист по обоим, много на них не писал, просто пару раз пробовал из любопытства.
Впечатление такое, что TS — это чуть продвинутый JS, а Dart — это чуть продвинутый TS.


V>>Плюс еще немножко удобств и синтаксического сахара.

S>MS сделал TS таким каким его хотел Гугл для Angular 2. Именно по этому он и основной.

Разработчик C# единолично сделал пруф типизированного JS, затем подключилось коммьюнити и "одобрило".
В этом месте Гуглу ничего не оставалось делать, если коммьюнити одобряэ.
Гугл попросил добавить еще фич в TS для совместимости по возможностям с Dart (MS включила фичи из гуглового AtScript в TS).

Вот теперь всё сошлось, в итоге у Гугла появился конвертер из TS в Dart:
https://github.com/angular/ts2dart


S> А можно поподробнее на счет сахара. То, что я видел ничего нового от TS не увидел.


Что касается синтаксиса, то да, в ES6 тоже уже много чего есть от обоих.

Но дело не в этом.
Dart более строгий язык, более интересный, как по мне.
Под такие языки от IDE больше пользы.
Язык с нормальной системой модулей, а не эмулируемой, как в JS, когда для эмуляции модульности иcпользуется динамический eval.
Нормальная модульность позволила сделать для Dart мощную стандартную библиотеку — а это самое первое для любого языка.
В этом смысле в JS всё очень и очень печально...

Однако, на нашей памяти было уже столько раз повторений одной и той же истории, когда выигрывала не лучшая технология, а худшая, но оказавшаяся в нужное время в нужном месте...
Посмотрим.
Ведь не исключается возможность дальнейшего развития TS, вплоть до нормального компиллируемого кода, как Dart, C# или Джава.
Так же не исключается появление сугубо TS-библиотек, а не только их оберток над имеющимися JS.
Как раз Angular-2 как пример.

Тут разработчик Шарпа поступил хитро — дал людям эдакий "мостик" м/у хаосом скриптового мира и мира, основанного на контрактах. Почему "мостик" — код JS одновременно является валидным TS-кодом, в этом суть трюка.
Точно так же когда-то С++ взлетел поверх уже ставшего стандартом де-факто С.

На эту тему есть интересная статья:
https://habrahabr.ru/company/wrike/blog/323550/

А вот для Dart-а всё это не так. На Dart надо как бы "перепрыгивать", а не плавно переходить, повторно используя уже имеющиеся наработки "as is". Вот принципиальное отличие, ИМХО.

Да, эти наработки для Dart можно портировать автоматически. Но, как показывает практика, всегда лучше сделать их с 0-ля на "нормальном" языке. Плюс сама необходимость портирования — это тоже психологический барьер.


S> в TS те же async await, гибридные типы, очень близок к C#. Даже в C# не ввели рекорды, а в TS аналог записи есть через конструктор, появился Deconstruct.

S> Так, что по сахару и TS и C# идут в одном направлении

А интерполяция строк в TS изкаробки есть?
(e, stackTrace) => print('Oh noes! $e $stackTrace'))

В C# 6.0 тоже есть.

И вообще, Dart имеет мейнстримовый сишный синтаксис:
class User {
    num id;
    string name;

    User(this.id, this.name);

    string getInfo() {
        return "id: $id name: $name";
    }
}

var tom = new User(1, "Tom");


Этот же пример на TS:
class User {
    id: number;
    name: string;

    constructor(userId: number, userName: string) {
        this.id = userId;
        this.name = userName;
    }

    getInfo(): string {
        return "id:" + this.id + " name:" + this.name;
    }
}

let tom: User = new User(1, "Tom");


Комментарии излишни, как по мне.
На Dart может писать сходу человек с бэкграундом C/C++/C#/Java.
Всё будет ложится гладко чисто на уровне рефлексов.

На другой стороне идут сторонники ключевого слова function и аннотаций типов через ':', типа TS/Swift/Nemerle


S> Кстати интересная статья История о том, как мы перевели проект в почти четверть миллиона строк на TypeScript и остались в живых


Дык, в этом и суть, пока JS будет являться валидным TS.
Можно переводить пошагово, с вменяемым объемом изменений на каждом шаге.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.