Dmitry
Хорошая статья
Nikita
Ща
Я думал, флоу тупо чекер и аннотации там тоже просто выкидываются.
Алексей
Фу, рантайм, даже комментировать не хочу)
без рантайм проверок во многих случаях просто нельзя вопрос лишь в том, кто будет их делать программист или рантайм
Dmitry
термины явная/не явнвая намного шире описывают типизацию
Дима
Можно линк?
https://flow.org/en/docs/lang/refinements/ Тут рассматривается аннотированный тривиальный случай, но в общем случае подход тот же. Если у тебя наружу выставлена функция, то тип на входе по дефолту mixed, и корректность типа надо выводить из него
Dmitry
Сохранил в закладки, спасибо!
Алексей
термины явная/не явнвая намного шире описывают типизацию
явная/не явная - это ещё одна "ось координат"
Nikita
Но это рекомендация к коду человеков, да.
Nikita
если там написать foo(value: string) и экспортировать её — та же фигня будет, что и с тс.
Дима
Флоу утверждает что в большинстве случаев тебе аннотации вообще не нужны
Dmitry
вы куда-то не туда ушли, нет?
Дима
Что перекликается с тем что я привёл выше
Nikita
А в нём можно для либ описывать какие функции экспортируются в апишечку?
Nikita
Чтобы он ожидал, что туда подставят любую фигню в параметры.
Nikita
И заставлял её валидировать.
Dmitry
Алексей
badum.ts
Алексей
украдено у ёлочки вроде бы
Матрос
вы лучше мне скажите какой мудак разрабу passport.js сказал что mutable-функции с side-эффектами это вин
Dmitry
))))
Nikita
Я понимаю, что можно там указать явно «тут может быть любой тип», но я имею ввиду другое: «тут должна быть строка, но это часть публичного апи и сюда реально могут сунуть что угодно, поэтому заставь меня проверить что это именно строка»
Матрос
у самого разраба ты имеешь ввиду?
Дима
А в нём можно для либ описывать какие функции экспортируются в апишечку?
Любая функция с export становится выставленной во внешний мир, ввиду чего по умолчанию считается что в неё передают все что взбредет в голову (mixed type) и это нужно валидировать
Алексей
вы лучше мне скажите какой мудак разрабу passport.js сказал что mutable-функции с side-эффектами это вин
mutable функций не бывает, а функций с side-эффектами в практически любом программировании будет целый вагон
Nikita
В таком случае он должен заставлять проверять тип, по-хорошему.
Dmitry
В таком случае он должен заставлять проверять тип, по-хорошему.
так это твоя работа, а не языка, или я не прав?
Дима
Матрос
ладно, вы тут про типизацию... совсем дела плохи
Nikita
так это твоя работа, а не языка, или я не прав?
мы не о языке, а о чекере. и его работа — сказать программисту где у него косяк. отсутствие проверки типов для экспортируемой вовне функции — косяк.
Дима
В таком случае он должен заставлять проверять тип, по-хорошему.
Ну короче mixed это и есть по смыслу «тип который ты должен проверить»
Матрос
а в плюсах mixed есть?..... я прост не помню(
Dmitry
мы не о языке, а о чекере. и его работа — сказать программисту где у него косяк. отсутствие проверки типов для экспортируемой вовне функции — косяк.
так а кто пишет чекер? я как раз сейчас сталкиваюсь, периодически, с проблемой что язык, Java, по своему интерпритирует всё что угодно, и ошибки я вижу те, которые он хочет.
Nikita
Ну короче mixed это и есть по смыслу «тип который ты должен проверить»
Оки. Я приглядывался к флоу, но так руки и не дошли.
Dmitry
проблема не в языке итипизации, а в том как мы используем язык, инструмент, который мы используем
Дима
Я всё же настаиваю что проблема именно в типизации)
Дима
Потому что с её помощью можно декларировать чуть больше чем просто кучку объектов
Алексей
попробуйте написать большой проект на каком-нибудь brainfuck, а потом говорите, что проблема не в языке
Dmitry
это совсем другая лига
Матрос
блин,я вот вообще подобных тем иногда не понимаю. вот блять все кому не лень порой хотят наебенить огромную иерархию типов... внезапно на JS. ну блин не для этого он, чего обсуждать типизацию? хотите типизации - идите в типизированные языки, почему нельзя довольствоваться красотой Js как раз с точки зрения того что тут типов как таковых нет и использовать плюшки с этим связанные?...
Dmitry
brainfuck был написан ради академического интереса, и не более
Матрос
попробуйте написать большой проект на каком-нибудь brainfuck, а потом говорите, что проблема не в языке
проблема тут в том кто выбрал brainfuck для большого проекта а не в языке
Дима
Дай мне брейнфак с функциями, я выведу тождественные преобразования и перейду к синтаксису компилируемому в брейнфак
Anonymous
работал кто с amazon lambda ?
Алексей
блин, я не про это вообще говорю, я про то, что язык имеет значение, а не только прямота рук программиста
Dmitry
это не сарказм
Матрос
да все на самом деле понимают, просто под ночь уже поболтать охота)
Матрос
если не понимают то "остановите я сойду"
Алексей
наброшу
Матрос
давай)
Алексей
я считаю, что тип есть всегда, а точнее интерфейс
Алексей
не всегда в языке
Матрос
стоп
Алексей
пускай даже в голове у программиста
Матрос
вот не надо вот так жестко путать
Матрос
интерфейс с типом
Алексей
ну хорошо, интерфейс
Dmitry
))))
Алексей
остановимся на интерфейсе
Матрос
Тайпкласс
что это?....
Матрос
это из TS?
Дима
Не хочу интерфейсы, они бесполезные
Алексей
Тайпкласс
я таких умных слов не знаю
Матрос
+
Дима
это из TS?
Почти 😄
Матрос
не шарп ли?
Дима
В шарпе такого тоже нет)