LINUX.ORG.RU

История изменений

Исправление Obezyan, (текущая версия) :

И TS с нормальным линьером и запретом на undefined

Гораздо интереснее не использовать any. Ведь он херит всю суть типизации. Я не видел ни одного крупного проекта без него.

Интересует с образовательной точки зрения а не по причине что я считаю что он лучше Java

Обезьян не учитель, но попробую базово раскидать на пальцах. TS на самом деле не решает проблемы JS. Сила JS в уровнях контекста block/function/variable и правилах приведения типов. Это позволяло отлично работать в виртуальной машине, но вкатыши в ИТ не понимали правила приведения типов, оттуда шло большинство проблем с кодом.

TS же это компилируемая надстройка добавляющая типы, слишком много типов. Ладно null, undefined и void. Но unknown, any, unique и never?

А как насчёт generic, union и intersection? А await и import? Это все типы.

И все бы ничего, но у TS - структурная типизация, это хорошо в классах, но полная жопа при большой глубине вложенности и использовании интерфейсов. Вообще, интерфейсы как примитив изоляции сущности перестают работать, по сути, из-за такого архитектурного косяка и был введены тип never.

TS это костыль, который упрощает разработку примитивных приложений, но делает невозможным создание больших систем (одна из причин почему у них все микросервисами).

Попробуйте реализовать assign() для Object без использования any, это классический пример.

Можно ещё много чего накидать, но основная проблема этого костылях - слишком громоздкая (идиоты называют её выразительной) система типов вкупе с недоделанной структурой типизацией.

Исходная версия Obezyan, :

И TS с нормальным линьером и запретом на undefined

Гораздо интереснее не использовать any. Ведь он херит всю суть типизации. Я не видел ни одного крупного проекта без него.

Интересует с образовательной точки зрения а не по причине что я считаю что он лучше Java

Обезьян не учитель, но попробую базово раскидать на пальцах. TS на самом деле не решает проблемы JS. Сила JS в уровнях контекста block/function/variable и правилах приведения типов. Это позволяло отлично работать в виртуальной машине, но вкатыши в ИТ не понимали правила приведения типов, оттуда шло большинство проблем с кодом.

TS же это компилируемая надстройка добавляющая типы, слишком много типов. Ладно null, undefined и void. Но unknown, any, unique и never?

А как насчёт generic, union и intersection? А await и import? Это все типы.

И все бы ничего, но у TS - структурная типизация, это хорошо в классах, но полная жопа при большой глубине вложенности и использовании интерфейсов. Вообще, интерфейсы как примитив изоляции сущности перестают работать, по сути, из-за такого архитектурного косяка и был введены тип never.

TS это костыль, который упрощает разработку примитивных приложений, но делает невозможным создание больших систем.

Попробуйте реализовать assign() для Object без использования any, это классический пример.

Можно ещё много чего накидать, но основная проблема этого костылях - слишком громоздкая (идиоты называют её выразительной) система типов вкупе с недоделанной структурой типизацией.