×Закрыть

TypeScript vs Flow

Собственно из названия темы и так понятно о чем будет идти речь. Интересно кто что из предложенных вариантов использует, по возможности аргументируйте свой выбор, и если есть опыт миграции обычного JS кода на TypeScript или Flow, поделитесь своим опытом, и принесло ли это положительный результат.

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn

Похожие топики

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Ts, он гораздо богаче сообществом и функционалом, так же есть typings

Доклад. Илья Климов — «Строгий» JavaScript: типы против реальности — youtu.be/etKOc80-cw0

Доклад. Фишки и прелести TypeScript, Александр Майоров — youtu.be/wgZIyWAGftE

Скринкаст по Flow — www.youtube.com/...​861zvILAjREUakZ6E5l7h7lsZ

Подкаст. Ночной фронтенд #26 — Дебаты о статической типизации — soundcloud.com/devschacht/nightly-26

Подкаст. Ночной фронтенд #27 — И снова о статической типизации в JS — soundcloud.com/devschacht/nightly-27

С flow не работал, но могу предположить, что для меня была бы основная разница в работе с декораторами. TypeScript имеет собственную реализацию, и декораторы спокойно транслируются в нормальные js методы, что сильно помогает их понять. У нас, например, на декораторах полностью реализован redux-symbiote. Никаких бойлерплейтов с тем, чтобы добавить новый єкшн. То, что я вижу в доках, говорит о том, что флоу просто игнорирует синтаксис декораторов и отдает єто на откуп єкспериментального джаваскрипта (возможно, бабель умеет в декораторы, но с TypeScript он нам не нужен, поєтому — не знаю)
В остальном Flow — местами более строгая версия TypeScript

babel уже и в тайпскрипт умеет)

В том виде в котором они есть сейчас они очень похожи. В том числе по синтаксису. Минус TS в том что у него свой пайплайн трансформации и он особо не совместим с другими (хотя, говорят, ухитрится можно). То есть, например, с Bable он из коробки не дружит. А Flow уже на Babel и построен, а значит совместимость будет идеальная. Хотя TS тоже хотят на Babel пересадить — будет не хуже. Плюсом TS будет лучшая поддержка среди инструментов и на порядок больше уже протипированных либ. Flow тоже старается, но еще пару лет точно догонять будет. В вопросе-же самого главного — типов — явного превосходства у кого-то нет и ситуация все время меняется

По опыту могу сказать что для существующего проекта внедрять Flow будет проще чем TS по тому-то что он работает по-файльно, так что польза будет получатся сразу, в то время как с TS «плавного» перехода не будет — пока все на затипишь пользы будет 0. А, ну и быстрее Flow. И скорее всего останется быстрее из-за той-же фундаментальной разницы в подходе к разбору проекта

babel уже добавили поддержку ts 3+

в то время как с TS «плавного» перехода не будет — пока все на затипишь пользы будет 0.

Это не соответствует действительности. Любой валидный код на ES6 является валидным кодом на TypeScript. Так что пофайловый переход более чем возможен и на TS. Другое дело, что нужно правильно настроить компилятор и линтер, чтобы они не ругались на отсутствие типов.

З того що колись читав то Typescript це коли хочеш кодити фронт з використанням повноцінного ООП, ну або щось близьке до такого як в бекенд мовах C# and Java. А Flow коли хочеш писати більш JS way з ФП, він лише надає типи. Тобто це абсолютно різної направленості інструменти. І оберати треба по тому чи хочеться ООП чи ФП. В кінці кінців я б дивився на вакансії, і юзейдж кожного з них в тій області де працюєш.

моя думка «з дивану»
Колись попробував flow на крихітному тестовому проектику — сподобалось. Може і надто строгий місцями (треба було <> дописати деінде, щоби не бурчав), але всі зауваження були по ділу. Ще сподобалось, що він є під всі основні платформи, не треба окремо лінукс діставати, якщо працюєш на віндовсі.
Typescript не пробував, тому думки не маю.

Тру. Єдиний фреймворк який щоб знати не треба ціленаправлено вивчати. Народний інструмент!

глупая тема, по типу:

что лучше, яйцо сваренное в крутую или в смятку?

Flow це прокачаний лінтер який підказує з типами, для його використання треба пресет бабеля який буде при білдах забирати flow типізацію. Typescript це вже рівень вище, це вже самодостатній надбудова над нативним не скірптами (колись могли бути трабли з npm пакетами, для них треба було дописувати файл з типами, не знаю чи ця проблема актуальна. Typescript маст хев якщо пишеш на ангулярі
Але на мою скромну думку якщо хочете статичну типізацію ідіть в джаву, і ніколи не вертайтеся в скріпти

Совет мудр шо капец...
— Ребята, что лучше чтобы ребёнка успокоить: валерианка или успокоительноe N посильнее?
— Валерианка — простая но действенная. Успокоительное N для случаев серьёзнее. Но по моему скромному времени, если не хотите чтобы ребёнок истерил, используйте противозачаточное и никогда не рожайте

т.е. надо на с++ переходить

c++ не такий вже і строго типізований — він би може і хотів, але сумісність із c не відпускає ;)
для строгої типізації є інші мови, у деяких навіть непогано зроблено...

поможе, але не всюди
'b' - 'a' — що вийде на c++, python та js?
може приклад і притягнутий за вуха, але ілюструє власне «силу типізації»

в нормальных языках — 1
в остальных сплошной UB

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

не соглашусь. Арифметику детям начинают обьяснять с абстракций: было 2 яблока, сьел одно, сколько осталось. Так и програмирование легче обьяснять абстаргируясь с помощью нетипизированого языка с минимум побочных телодвижений, грубо говоря, на пальцах . Потом Java/C#, добавляем сложности С++, а потом C -> асемблер-> приобретаем клавиатуру 0 1 return. Но если дойти до асемблера с полным пониманием происходящего то можно и на JS и на брейнфаке писать годноту. Но зачем, если уже здесь и сейчас за «арифметику» платят в деньгах.

вы же понимаете разницу между обучением ребенка и обучением т.н. профессионала? да жеж, да?
если современным профессионалам начинают обучение с яблока (добрый день вам, яблучко © ), то это блин шо за профессионалы?

По ощущению TypeScript умеет намного больше возможностей для декларации типов, чем Java, да и наверное чем F#.

да и наверное чем F#.

Вроде бы в TS завозят многое из F#, но, если хочется именно функциональщины, то я бы смотрел на ReasonML / Bucklescript.

если хочется именно функциональщины, то я бы смотрел на ReasonML / Bucklescript.

Elm, PureScript и ClojureScript еще есть, например.

Подписаться на комментарии