Но этот хак можно развить... )))
Мы про спеку языка, спека говорит как можно, а не как нужно, и спека должна выполняться, даже если это ведет к говнокоду
Что хорошо и что плохо мы тут не обсуждаем. По спеке js поддерживает возврат промиса из конструктора, ts не поддерживает, но ts заявляет, что поддерживает типизацию любых конструкций js, т.е. официальный слонан — TypeScript is a superset of JavaScript that compiles to clean JavaScript output — github.com/microsoft/TypeScript
почему?
Обещали не выводить типы, а не давать ошибку компилятора. Официальный слоган языка — TypeScript is a superset of JavaScript that compiles to clean JavaScript output — и с первого дня во всех презентациях на это давили — github.com/microsoft/TypeScript
Мне шашички. TS не типизирует все конструкции JS, это факт. Заменять можно, но это уже не суперсет языка обещанный.
Какая фабрика? Можно полностью на ФП пепейти, и что? В JS можно вернуть промис из конструктора, в TS нет — все, уже не все типизируется.
Напиши мне на TS класс, который можно инстанциировать так: const connection = await new Connection(host, port);
Все, о чем я написал гуглится и доказывается, но сделают это люди самостоятельно.
1. Не любая конструкция джаваскрипт может быть типизирована тайпскриптом, а то, что это надмножество — это просто маркетинговое вранье.
2. Иногда он неправильно обрабатывает типы и находит ошибки там, где их нет, а пропускает там, где они есть.
3. Основные ошибки они не в системе типов, а в логике программы, в неправильной декомпозиции, в анипаттернах, которые можно без труда покрыть типами и проблема не решится. Разработчики находятся под гипнозом ложной надежности и они меньше заботятся о тестах и ревью кода.
4. В рантайме проверки типов нет, а при взаимодействии клиента и сервера или микросервисов друг с другом все проверки нужно делать руками.
5. Разработчики бегут от сложности предметной области в уютный мирок обсуждения типов в курилках, это достаточно круто звучит все и делает видимость сложного и серьезного дела, чтоб не концентрироваться на душных задачах бизнеса.
6. В нем нет автовывода, а вместо него все много раз дублируется и захламляет код, снижая его читаемость и понятность.
7. Тайпскрипт некоторые идеи передаст в js и отомрет, тогда нужно будет переписывать проекты, как уже было с кофескриптом и многими другим суррогатными языками.
8. Нет четкой спецификации синтаксиса языка, она вообще отсутствует и язык состоит из отдельных фич, которые можно включить и выключить в конфиге.
9. Тестирование решает те же проблемы, но делает это надежнее, потому, что проверяет не только сигнатуры, но и сложное поведение, в том числе асинхронное.
10. Ну и как показал уже Илья в докладах — это экономически не выгодно. Деньги потраченные на юниттесты дают лучший результат.
TypeScript — строгая типизация на системе типов JavaScript. Это как связать руки тому, у кого уже ноги сломаны.
TypeScript хорош только в кусочках кода, размером с экран, но в больших проектах начинается зацепление типов, это дополнительный coupling.
Несколько гигагерц это я конечно загнул, но это не последний проц, 300 это в районе 95 года было, а к 2000м годам были уже гигагерцовые камни были.
Что такое техстек Метархия можно понять из короткого доклада на полчаса youtu.be/PHyl4b8Fj5A
Жаль, что после интервью остается впечатление тотального отрицания, согласен, что это тупиковый путь. Но я же не ною, а закатал рукава и делаю. Да, есть критика, но это нормальный процесс, без критики ничего не будет развиваться, критикуешь — предлагай. Я предлагаю и даже редаю.
По цитатам, ну если вы видите за ними ностальгию... я не, я вижу в них мемы, от которых у всех подгорает, так это проблема у тех, у кого подгорает, а не у меня.
Ну и по серверлесу. Я ни где не говорю про firecracker, у меня притензии к облачным функиям на node.js и serverless. По сути теряется вся идея неблокирующего ввода вывода, и нода, которая может одним процессом обрабатывать тысячи и десятки тысяч запросов асинхронно-параллельно, в облачном варианте зажата 1 запросом в каждый момент времени, тормознутыми прогревами, необходимостью запускать тысячи инстансов при большом rps, а это все деньги, которые, якобы, я не умею считать, но на bare metal все решалось бы дешевле.
Там, наверное, вообще не надо будет умирать... youtu.be/2ift8T7eVEo
Из студентов я нахожу самых способных и делаю коллективы, которые на 50% пишут коммерческий продукт, а на 50% оупенсорс, контрибьютят в технологию или свою делают. И я никогда не был для них директором и менеджером, а просто старшим коллегой, с которым и задачами можно поделиться и полученные за проект деньги мы открыто распределяем между всеми участниками, не оставляя ни какой прибыли, все в зарплаты уходит.
const classFactory = T => class extends T { doSomething() {} };
илиconst secondComing = await new Coming();
Кстати, сейчас мы делаем СУБД и сетевой протокол, которые являются далекими наследниками того, что мы делали с тобой в начале 2000х, но уже с распределенными транзакциями, блокировками и оптимистической синхронизацией, т.е. много сценариев синхронизации состояний с автоматическим выбором оптимальной.
В js можно из конструктора любое че-хоч вернуть constructor() { return new Proise(r => ’и че?’); }, а если серьезно:
www.youtube.com/watch?v=dJr5Z2-QsfY