Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

TypeScript vs Flow

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Собственно из названия темы и так понятно о чем будет идти речь. Интересно кто что из предложенных вариантов использует, по возможности аргументируйте свой выбор, и если есть опыт миграции обычного 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. Другое дело, что нужно правильно настроить компилятор и линтер, чтобы они не ругались на отсутствие типов.

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

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

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

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

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

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

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

treat warnings as errors

поможе, але не всюди
'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 еще есть, например.

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