Фил Ранжин
Shub
Shub
к тому же, где го демонстрирует хоть какой-то успех - там любой язык демонстрирует успех. отдавать байтики по сети может кто угодно. перл например делает это просто великолепно
Viacheslav
а почему красным подчёркнуты? lessThanXXX
Фил Ранжин
иллюстрация роаботоспособности проверки
Фил Ранжин
Фил Ранжин
вот так нагляднее
Viacheslav
ну т.е. ошибка компиляции если x >= n в LessThan<n>?
Фил Ранжин
типа того
George
вот так нагляднее
по наглядности - ренейм check в consumeNumberLessThan100 должен помочь. Т.к. проверка того, что число действительно меньше ста происходит в if-е парой строк выше
Vladyslav
а откуда он знает какой x будет?
Фил Ранжин
Фил Ранжин
он не знает, он требует, чтоб ты проверил
Фил Ранжин
внутри ифа он точно знает, что lessThan100 - меньше ста
Фил Ранжин
а снаружи ифа он нихуя не знает
George
скомпилится ли
const lessThan50 = LessThan.tryCreate(50, x);
if (lessThan50)
consumeNumberLessThan100(lessThan50);
?
Фил Ранжин
неа
Фил Ранжин
даже если такое и можно сделать (язык типов тс тьюринг полный), то иде будет страшно тормозить
Vladimir
раскрой карты, как это работает)
Фил Ранжин
Фил Ранжин
тут магия в том, что typescript уметт понимать, что есть тип 100
Фил Ранжин
который екстендит намбер
Фил Ранжин
мой tryCreate возвращает LessThan<T> или null
его результат нельзя использовать, пока не проверишь его на не нулл в ифе. Внутри ифа тс смарткастит его в просто LessThan<T>
Ilya
Эх, надо бы тоже ts потыкать. Система типов вкусная.
Фил Ранжин
до тех пор, пока не хочешь рантайм проверок
Vladyslav
и типо что бы допустим сложить эти типы можно просто + бахнуть?
Vladimir
хм, тут получается неявный паттернматч
Doge
Ну да, логично, примерно как в скале с синглтон типами
Фил Ранжин
Vladimir
а давно ts научился разделять null от типа в sum тип? или так всегда было?)
Фил Ранжин
sum тип?
Фил Ранжин
Vladimir
ну LessThan<T> | null
Фил Ранжин
всегда умел. но требует чекать только со стриктнуллчеком
Фил Ранжин
можно майби сварганить
Vladimir
круто
Фил Ранжин
только все фронтендеры отключают strictNullCheck
Фил Ранжин
потому что они тупые
Фил Ранжин
Vladimir
Romɑn
Фил Ранжин
это не завтипы. Так, небольшая магия
Фил Ранжин
насколько я понимаю
Vladimir
тут неявный паттернматч
Vladimir
иф посути определяет тип, который дальше уже точно известен
Vladimir
а, ну это в случае 21 строки, в случае с 200 это необычно) возможность типизировать дженерик значением
Dr. Friedrich
Чуть-чуть осталось, и будут завтипы.
Фил Ранжин
Roman
Все-таки нестерук какой-то отбитый. Он добрался до комментов к своему подкасту про фшарп
Ilya
А в фиолетовом выглядел адекватным🤔
Dr. Friedrich
Ilya
Тогда я путаю, наверное. Ок.
Dr. Friedrich
Человек, который пишет ответы на посты в чате за 2017 год, не выглядит очень уж адекватным :)
Ilya
Зато вежливо!
Ilya
И это тоже, кстати.
Ilya
Редко бывает человек в тг, занят. Что поделаешь.
Igor
вот я говорю, что жава разработчики не умеют асинхронность и вот прямо сейчас я наблюдаю такой код: https://github.com/apache/activemq-artemis/blob/master/examples/protocols/amqp/dotnet/HighPerformanceLoad/ReceiverPool.cs#L97
Igor
правда этот жава разработчик написал хай перфоманс пример на шарпе
Igor
описание у метода Receive:
Receives a message. The call is blocked until a message is available or the timeout duration expires.
да оно и по сигнатуре видно, что он блокирующий
Фил Ранжин
Фил Ранжин
Andrew
Ребят кто может пояснить что тут происходит понятным языком?
Andrew
Конкретно первые 3 строки интересуют
Vasily
Похоже на хуету
Igor
single case DU c приватным конструктором
Andrew
Что то напоминает простейший зависимый тип, не?
Andrew
Хотя не
Vasily
Ну в общем это такая модная попытка сделать тип непредставимым
Andrew
Тут оно не в компайл тайме резолвится
Andrew
Vasily
Угу
Igor
и там статический метод Create создает объект, это чтобы строку проверить
Vasily
Похоже на код из примера @atsapura
Andrew
Да, это он и есть
Vasily
С моей точки зрения, натягивание совы на глобус, но выглядит красиво
Vasily
Я больше по опшнам упарываюсь в таких случаях