Roman
Ale
Ale
а, пример в папке controllers?
Ale
да, идея супер
Evgeny
а зачем require('./controllers/controller');?
Roman
получилось бы как аннотации в спринге или хелперы в джанго
Ale
Ale
но будущее мутновато, да(
Roman
я в плане в бабеле же нет поддержки по дефолту
Sergey
блуберд в зависимостях
Sergey
лол
Ale
ну я декораторы юзанул только потому, что их проще в ast находить
Ale
чем вызов, и их лучше ts понимает, чем вызов функции с аргументом
Ilya
mvc мутите?
Ale
т.е. заменить потом на вызов не беда
Vladimir
Чет не понял как это тайпчекается
Sergey
чет не понял че за HTTPRoutes
Ilya
Sergey
глобально чоль объявляет?
Roman
т.е перед запуском сервера проходит статическая проверка
Vladimir
Roman
в итоге типы флоу + неокоторые декораторы - источник апи
Vladimir
Как чекается что там вообще есть id
Vladimir
Или другие параметры
Sergey
Roman
примерно как в серванте хаскелевском, но там естественно язык все тянет
Vladimir
Не, ну я не знаю как там
Vladimir
Но здесь предполагаю что никак
Roman
не, контроллер щас тайп чекается ок, в чем проблема
Vladimir
Я вот такое делал по фану
Roman
есть типы для аргументов описанные, есть для выхода функции и соотв-но ендпоинта
Ale
"/path", function(id: Path<number>){}
Ale
как ты проверишь, что в path вообще есть id?
Ale
это только в рантайме прокатит
Ale
ну точнее, самый простой вариант это в рантайме делать)
Vladimir
https://pbs.twimg.com/media/Cw6dImEXcAI514a.jpg:large
Ale
а как ты статически проверяешь?
Ale
Sergey
Ale
Vladimir
Вот здесь статическаятипизация роутнига
Roman
Vladimir
Не не, у тебя как раз статической проверки нет
Vladimir
Как я понял
Vladimir
Только динамическая
Roman
Ale
контроллер щас это корретктный флоу код
еще раз пример HTTPRoute({method: 'GET', path: '/pet/:id'})((id: Path<number>, token: Headers<string>):
ок, есть такой параметр, как id
HTTPRoute({method: 'GET', path: '/pet/'})((id: Path<number>, token: Headers<string>):
нет такого параметра, как id
Ale
это ж только в рантайме будет падать
Ale
ну типа можно чето выдумать для статики, но это уже сбоку будет
Sergey
Roman
это ж только в рантайме будет падать
в данном случае там под капотом создаются экспрессовые роуты и они будут разные, возможно это можно как-то лучше сделать, пока все очень сыро
Ale
Roman
соотв-но когда придут данные, ручка проверит по рантайм валидации, есть ли в пути id и да, упадет с ошибкой валидации 400
Ale
ну да, я про это и говорил
Ale
что для этого кейса только рантайм будет
Ale
вообще дико не хватает удобного(=высокоуровневого) api для работы с типами в компайл-тайме
Roman
да, ключевое слово высокоуровневого
Roman
постоянно приходится возиться с транспортной имплементацией
Roman
или писать свои велосипеды
Roman
возможно это даже можно сделать лучше чем в спринге за счет хорошей экспрессии флоу
Roman
в общем, если кому-то оказалась интересна идея и хочет поучаствовать - пишите, let’s make node great again
Sergey
Sergey
Roman
хорошо
Sergey
V
меня тоже добавляй :)
Николаич
Я тоже в теме