Но этот хак можно развить... )))
Мы про спеку языка, спека говорит как можно, а не как нужно, и спека должна выполняться, даже если это ведет к говнокоду
Что хорошо и что плохо мы тут не обсуждаем. По спеке 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.
Моя школа, горжусь, но одна небольшая фигня — TS, рили?
Несколько гигагерц это я конечно загнул, но это не последний проц, 300 это в районе 95 года было, а к 2000м годам были уже гигагерцовые камни были.
Что такое техстек Метархия можно понять из короткого доклада на полчаса
Жаль, что после интервью остается впечатление тотального отрицания, согласен, что это тупиковый путь. Но я же не ною, а закатал рукава и делаю. Да, есть критика, но это нормальный процесс, без критики ничего не будет развиваться, критикуешь — предлагай. Я предлагаю и даже редаю.
По цитатам, ну если вы видите за ними ностальгию... я не, я вижу в них мемы, от которых у всех подгорает, так это проблема у тех, у кого подгорает, а не у меня.
Ну и по серверлесу. Я ни где не говорю про firecracker, у меня притензии к облачным функиям на node.js и serverless. По сути теряется вся идея неблокирующего ввода вывода, и нода, которая может одним процессом обрабатывать тысячи и десятки тысяч запросов асинхронно-параллельно, в облачном варианте зажата 1 запросом в каждый момент времени, тормознутыми прогревами, необходимостью запускать тысячи инстансов при большом rps, а это все деньги, которые, якобы, я не умею считать, но на bare metal все решалось бы дешевле.
Там, наверное, вообще не надо будет умирать...
Из студентов я нахожу самых способных и делаю коллективы, которые на 50% пишут коммерческий продукт, а на 50% оупенсорс, контрибьютят в технологию или свою делают. И я никогда не был для них директором и менеджером, а просто старшим коллегой, с которым и задачами можно поделиться и полученные за проект деньги мы открыто распределяем между всеми участниками, не оставляя ни какой прибыли, все в зарплаты уходит.
const classFactory = T => class extends T { doSomething() {} };
илиconst secondComing = await new Coming();
Кстати, сейчас мы делаем СУБД и сетевой протокол, которые являются далекими наследниками того, что мы делали с тобой в начале 2000х, но уже с распределенными транзакциями, блокировками и оптимистической синхронизацией, т.е. много сценариев синхронизации состояний с автоматическим выбором оптимальной.
В js можно из конструктора любое че-хоч вернуть constructor() { return new Proise(r => ’и че?’); }, а если серьезно: