LINUX.ORG.RU

Какие могут быть причины не использовать Typescript?

 ,


0

2

Совершенно неожиданно для себя открыл жемчужину среди языков программирования — TypeScript. Полная совместимость с JavaScript, нормальная система типов сверху, выплёвывает отличный JavaScript на выходе, добавляет какие-то фишки из ES6, синтаксис (как я понял) один в один из ES6. Прямо изучал и поражался, как всё правильно сделали, не придерёшься.

Собственно вопрос — какие могут быть причины отказаться от его использования в пользу того же JavaScript? Почему вы, зная про его существование, до сих пор не перешли на него?

★★★★★

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

Совершенно неожиданно для себя открыл жемчужиину среди языков программирования — TypeScript

А ты быстрый.

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

Я на JS если и писал, то небольшие куски, не особенно интересовался положением дел.

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

нормальная система типов сверху
изучал и поражался, как всё правильно сделали

какие могут быть причины отказаться от его использования

haskell, elm
ну и lisp

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

1. Microsoft
2. Кроме типов ничего нет
3. Как там работать с нетипизированным кодом из js? (не пробовал, лишь вопрошаю)

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

Microsoft

Большая компания с серьёзными ресурами на разработку, вселяет уверенность в том, что проект не забросят через полгода. Хороший плюс для языка.

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

2. Кроме типов ничего нет

Всё остальное есть в JavaScript.

3. Как там работать с нетипизированным кодом из js? (не пробовал, лишь вопрошаю)

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

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

Есть тип any, при использовании которого все проверки отключаются.

Получается бессмысленно

Но правильней написать типизированное описание этого нетипизированного кода.

то есть подключил 10 библиотек из npm, будь добро опиши все?

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

Получается бессмысленно

Нет. Получается опционально. Это значит, что ты переименовываешь file.js в file.ts и у тебя всё работает. Потом ты потихоньку добавляешь типы и у тебя всё продолжает работать, только код потихоньку становится строже и вылавливаются типобаги.

то есть подключил 10 библиотек из npm, будь добро опиши все?

Или опиши, или найди того, кто описал. Ну или не описывай и не получай преимуществ от типизации при взаимодействии с этим кодом. Всё предельно честно.

Legioner ★★★★★
() автор топика

какие могут быть причины отказаться от его использования в пользу того же JavaScript?

Боязнь скатиться до уровня жабиста?

javaQest
()

Мне не нравится обманывать себя «классами», «интерфейсами» и прочими обертками, когда в итоге получаются те же функции-конструкторы и прототипы.

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

Или опиши

Трата кучи времени

найди того, кто описал

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

Ну или не описывай и не получай преимуществ от типизации при взаимодействии с этим кодом. Всё предельно честно.

Или не используй TypeScript :) мне es6 в лице babel хватает и не нужно заморачиваться пытаясь сделать из динамического языка статический, жутко страдая от новых проблем

з.ы. я не против типов, но не такой ценой

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

haskell ...ну и lisp

А откуда взялась эта «традиция» все время притягивать за уши лисп к хаскелю?:) Они что, разве имеют хоть что то общее? Лисп гораздо больше общего имеет с тем же JS, нежели с хаскелем. Абсолютно разные, идеологически противоположные культуры...

javaQest
()

какие могут быть причины не ковырять в носу тред.

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

Включил, большинство того что там есть уже отстает от текущих версий, кроме того тут нету и 0.001% библиотек.

Опять же, делать тупую работу и описывать типы для библиотек - не комильфо и трата времени.

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

Включил, большинство того что там есть уже отстает от текущих версий

ну так подпили, проект свободный. или только потреблять?

кроме того тут нету и 0.001% библиотек.

включаем any и не имеем никаких проблем. потом по надобности/времени/желанию - делаем дефайны

Опять же, делать тупую работу и описывать типы для библиотек - не комильфо и трата времени.

any

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

any

зачем тогда TypeScript?

или только потреблять?

время - деньги, у меня на тупую работу нет ни времени, ни желания, это как гвозди руками забивать

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

зачем тогда TypeScript?

Чтобы использовать типы там, где это имеет смысл. Если весь твой код это две строчки, вызывающие библиотеку, тогда тебе он не нужен, да. А если ты пишешь больше сотни строк на JavaScript, тогда ты получишь преимущество типизированного кода.

время - деньги, у меня на тупую работу нет ни времени, ни желания, это как гвозди руками забивать

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

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

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

вот и я о том же, чем и занимаются авторы https://github.com/borisyankov/DefinitelyTyped

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

зачем тогда TypeScript?

для того, чтобы писать на нем свой код, очевидно

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

авторы делают это один раз для всех. боли ЖС же персональны и перманентны

dib2 ★★★★★
()

Собственно вопрос — какие могут быть причины отказаться от его использования в пользу того же JavaScript?

1. ES6

2. ES6

3. ES6

anonymous
()

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

Долго приглядывался к дарту, но к сожалению гугл на него забил так и не запилив его ни для браузера ни для сервера.

ya-betmen ★★★★★
()
Ответ на: комментарий от x3al

Кто-то из вас не прав, либо ты, либо википедия

TypeScript является надстройкой над JavaScript. Таким образом, программа JavaScript также является правильной программой TypeScript, и программа TypeScript могут легко включать JavaScript. TypeScript компилирует ES3-совместимый JavaScript.[12] По умолчанию компилируется ECMAScript 3, как преобладающей стандарт; также есть возможность создавать конструкции, используемые в ECMAScript 5.

javaQest
()
Ответ на: комментарий от x3al

И в буржуйской то же самое

TypeScript is a strict superset of JavaScript. As such, a JavaScript program is also a valid TypeScript program, and a TypeScript program can seamlessly consume JavaScript. TypeScript compiles to ES3-compatible JavaScript.[24] By default the compiler targets ECMAScript 3, the current prevailing standard, and is also able to generate constructs used in ECMAScript 5.

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

Вики — твой источник знаний по хипстерским технологиям? Окей.

Угадай, что даёт --target es6 тайпскрипта. Да, это можно скормить babel'у, если не против лишнего шага компиляции. Да, можно уже сейчас юзать async/await.

Единственное «но» — не забыть включить sourcemaps, чтобы потом не сойти с ума при дебаге. Ну и babel — не typescript и не заточен на красивый выхлоп.

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

википедия

Это которая тебя так откровенно троллит?

TypeScript отличается от JavaScript... поддержкой использования полноценных классов (как в традиционных объектно-ориентированных языках),

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

то есть подключил 10 библиотек из npm, будь добро опиши все?

Смотри в сторону DefinitelyTyped. В своё время сам закинул туда несколько качественных описаний + поправил имеющиеся. Сейчас там за 1к+ этих самых описаний.

loyd
()
Ответ на: комментарий от Legioner

вселяет уверенность в том, что проект не забросят через полгода

Пользователи Forefront TMG ржут в голос

Pinkbyte ★★★★★
()

Нет изкоробочных es6 полифилов для startsWith и т.д.

anonymous
()
Ответ на: комментарий от Legioner

тогда ты получишь преимущество типизированного кода.

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

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

А типизация в среде -> А преимущества типизации в среде

anonymous
()

Уже где-то писал. Давно это было. Наверное сейчас всё получше.

1. Компилятор ts компилит всю иерархию файлов и помещает js-файлы несколько непредсказуемым и неочевидным способом. Приходилось костылять пустые ts-файлы, обозначающие корень проекта. Деталей не помню.

2. d.ts декларации часто не соотвестсвуют некущей версии библиотеки. Либо не учитывают сложных вариантов (generic-функции, возвращаемые значения нескольких типов)

3. Модули подключаются крсиво, через import/export, а d.ts надо приходится присобачивать сбоку, через XML-тэг

4. Для angular приходилось отдельно описывать декларации своих моделей/контроллеров. Что увеливало код раза в два

В результате оказалось проще писать на es5 и покрывать тестами

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.