LINUX.ORG.RU

Typescript, как ведущая технология.

 , ,


0

3

Встал вопрос выбора технологий под новый проект.

Накидайте плюсов typescript, господа, владеющие данным ЯП.
Сам пока насмотрелся дивных косяков и неприятных моментов:

1 Не нужен без IDE. В редакторых без обвеса бесмыссленно на нём писать. Предлагаемый VSCode тырит всё, к чему может дотянуться (прописано в лицензии и в требованиях к дополнениям)
2 Прямо из документации: Null и его весёлые проблемы, простой тип Boolean, точно Вам говорю! Ссылки на «нормально». Да весь раздел по ссылке весёлый.
3 Это надо разбираться и уметь, а те, кто клепает на React/Vue, да и просто большинство - не знают, как вообще работает JS или ИХ выбранный framework, куда им до выведения типов, сложно, короче.
4 Всегда стремает MS. Сколько я с ней не работал, везде отношение " пользователь - не человек".

А так, если на этот список закрыть глаза, очень здравая идея.



Последнее исправление: Neuromagus (всего исправлений: 3)

По мне так лучше брать babel и не заморачиваться с ts, и на js можно писать качественный код, использовать линтеры, тестировать код и документировать через jsdoc, и это будет быстрее и проще.

Видел я проекты ts фанатиков, где по итогу начинают забивать и везде пихать any и обкладываться преобразованиями типов. Лучше тогда брать java/c#/ruby/go.

neversleep ★★
()
Последнее исправление: neversleep (всего исправлений: 1)

Скажу неожиданное но нахер Typescript и весь этот цирк с «компиляцией в Javascript», все потому что в ECMA6 завезли нормальные классы:

class Shape {
    constructor (id, x, y) {
        this.id = id
        this.move(x, y)
    }
    move (x, y) {
        this.x = x
        this.y = y
    }
}

и модули:

import exp, { pi, e } from "lib/mathplusplus"
console.log("e^{π} = " + exp(pi))

Осталось только добавить статическую типизацию чтобы похоронить TS совсем. Потому что ECMA6 работает уже в твоем браузере, без всех этих диких прокладок.

C Typescript ты попадешь на то что твой код это некая абстракция, которую прежде чем запустить придется «компилировать» в другой код. И компилятор там сложный и не твой, еще и постоянно изменяющийся. В случае чего шансов самостоятельно поправить Typescript transpiler просто нет.

alex0x08 ★★★
()

1 - бред, писать можно хоть в блокноте.

2 - нет никаких проблем.

3 - тут согласен, сложно, да. Пожалуй самый сложный язык из мейнстримовых. С другой стороны можно считать это неким входным порогом, чтобы отсеивать плохих программистов.

4 - хз о чём ты.

Ещё добавлю рекомендацию - крайне необходимо использовать eslint вкупе с сабжем. Т.к. тот же any запрещать нужно, к примеру, иначе тебе там понапишут. Ну и в целом там много полезного.

vbr ★★★
()
Ответ на: комментарий от vbr

1 - бред, писать можно хоть в блокноте.

Все плюшки нивелируются. Автодополнения методов/полей объектов нет, битья по рукам тоже нет. Писать можно, при компиляции будет ругаться. Вот только зачем натягивть несчастную сову?

крайне необходимо использовать eslint вкупе с сабжем

Тут от команды зависит.

Neuromagus
() автор топика
Ответ на: комментарий от alex0x08

И компилятор там сложный и не твой, еще и постоянно изменяющийся. В случае чего шансов самостоятельно поправить Typescript transpiler просто нет.

полоностью согласен.

Neuromagus
() автор топика
Ответ на: комментарий от DarkAmateur

А если не работает, то можно транспилировать?

ТС выбирает решение под новый проект, который еще надо создать. Врядли у него стоит задача покорения мира и 100% покрытия клиентской базы и всего возможного зоопарка браузеров.

Так что на самом деле речь про работу в гугловом хроме и его вариациях, где с поддержкой ECMA6 все очень хорошо.

alex0x08 ★★★
()
Ответ на: комментарий от alex0x08

ой, конечно есть задача покорить мир ;)

Можно прогнать код через массу инструментов. У ТСа вообще-то с уровнем всё хорошо. Надо было выяснить у зубров отношение к технологиям, навязанным Западом. Выяснил. Зубры смотрят с опаской, если надо, решают. 30 летние школьники видят «свет в конце туннеля» и молятся (другого просто не знают и не видели никогда) на Subj.

Я тебе больше скажу, как-то выяснял о знаниях JS (люди пишут по 5 лет) на ЛОР, так обкакались парни. Никто не знал, как и почему работает их асинхронный код.

Neuromagus
() автор топика
Ответ на: комментарий от Neuromagus

Надо было выяснить у зубров отношение к технологиям, навязанным Западом

Собственно вообще все технологии являются западными, только не навязанными а созданными. Это отражение их культуры. Тот же Китай например в плане ИТ и разработки до сих пор лишь копирует, поэтому популярных китайских фреймворков не существует.

Я тебе больше скажу, как-то выяснял о знаниях JS (люди пишут по 5 лет) на ЛОР, так обкакались парни. Никто не знал, как и почему работает их асинхронный код.

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

Очень сильно сомневаюсь что ты сможешь рассказать как на самом деле выполняется код JS.

alex0x08 ★★★
()
Последнее исправление: alex0x08 (всего исправлений: 1)
Ответ на: комментарий от Neuromagus

Все плюшки нивелируются. Автодополнения методов/полей объектов нет, битья по рукам тоже нет. Писать можно, при компиляции будет ругаться. Вот только зачем натягивть несчастную сову?

Единственная существенная причина использовать статически типизируемый язык - уменьшить число багов. На это блокнот не влияет. Автодополнение это свистелки, приятно но не очень важно. В жаваскрипте автодополнение тоже неплохо работает.

vbr ★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от alex0x08

Очень сильно сомневаюсь что ты сможешь рассказать как на самом деле выполняется код JS.

Почему, могу.

Как пример, что будет первым, вторым и третьим выполняться: setTimeout(), promise, async/await? Почему?

Neuromagus
() автор топика
Ответ на: комментарий от Neuromagus

Да, я так и думал ) Поищи в интернете про внутреннее устройство виртуальных машин и процесс выполнения чтоли. На уровне внешних команд обсужать это цирк просто.

alex0x08 ★★★
()
Ответ на: комментарий от alex0x08

Поищи в интернете про внутреннее устройство виртуальных машин и процесс выполнения чтоли.

С каждой версией браузера реализация меняется. Тут не всё так однозначно. Ну и кто их пилит, там всё по разному от компании.

Neuromagus
() автор топика
Ответ на: комментарий от alex0x08

Так люди не знают JS. Вот и всё. Пишут прод, embedded. А потом всё не то, что тормозит, а убивает людей (где-то случаай разбирали про планшет и фронт, где челу в скорой не показало аллергическую реакцию изза ошибки).

Neuromagus
() автор топика
Ответ на: комментарий от Neuromagus

Дело не в знаниях, толку с того что ты знаешь как оно работает, если единица рабочей массы в ИТ это средний инженер-недоучка.

де-то случаай разбирали про планшет и фронт, где челу в скорой не показало аллергическую реакцию изза ошибки

Именно поэтому я не занимаюсь разработкой софта для медицины.

alex0x08 ★★★
()
Ответ на: комментарий от realbarmaley

вдвойне смешной. Ты своё приложение открой на андроиде, яблоке, ПК, а потом сюда пиши ещё, мне такие странные персонажи вспечатляют своей безудержной прямолинейностью

Neuromagus
() автор топика
Ответ на: комментарий от Nervous

Все срочно бежим на мейнфреймы с доступом через удалённый терминал.

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

ugoday ★★★★★
()