Фил Ранжин
идиот? или гений?
Shub
к тому же, где го демонстрирует хоть какой-то успех - там любой язык демонстрирует успех. отдавать байтики по сети может кто угодно. перл например делает это просто великолепно
Viacheslav
идиот? или гений?
а почему красным подчёркнуты? lessThanXXX
Фил Ранжин
иллюстрация роаботоспособности проверки
Viacheslav
иллюстрация роаботоспособности проверки
мне чот показалось, что всё правильно: в lessThan100 лежит 90, если судить по tryCreate. или как это работает?
Фил Ранжин
Фил Ранжин
вот так нагляднее
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
круто
Dr. Friedrich
ну LessThan<T> | null
Года три назад сделали такую фичу
Фил Ранжин
только все фронтендеры отключают strictNullCheck
Фил Ранжин
потому что они тупые
Фил Ранжин
Romɑn
Завтипы в тс?
Фил Ранжин
это не завтипы. Так, небольшая магия
Фил Ранжин
насколько я понимаю
Vladimir
тут неявный паттернматч
Vladimir
иф посути определяет тип, который дальше уже точно известен
Vladimir
а, ну это в случае 21 строки, в случае с 200 это необычно) возможность типизировать дженерик значением
Dr. Friedrich
это не завтипы. Так, небольшая магия
Ну, на самом деле что-то близкое уже
Dr. Friedrich
Чуть-чуть осталось, и будут завтипы.
Roman
Все-таки нестерук какой-то отбитый. Он добрался до комментов к своему подкасту про фшарп
Ilya
А в фиолетовом выглядел адекватным🤔
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
Я больше по опшнам упарываюсь в таких случаях