@typescript_ru

Страница 367 из 669
Vlad
02.10.2017
21:42:40
всё на этом первая часть закончела. хотелка достигнута. на беке есть тоже поддержка типов и типы шарятся между беком и фронтом. 1 раз написаны - красота.

вы хотите писать без TS - пишите. или скорее всего ваш бек вообще не на JS и тогда и говорить не о чем конечно же.

и тут меня занесло в ОРМ, т.к. я подумал “стой было бы круто…"

и вот курю в сторону typeorm и соображаю можно было бы….

Google
Vlad
02.10.2017
21:43:42
но это уже совсем другая история

Yury
02.10.2017
21:43:43
А почему у вас типы на фронте и беке совпадают?

Ivan
02.10.2017
21:44:06
@vladsharikov я тебя предупреждал что тут начнётся %)

Vlad
02.10.2017
21:44:51
Безусловно они не полностью совпадают. Частично совпадение есть. Например у меня есть объект который возвращает бек: {items: Tag[]}. У меня есть Тег. И он блин совпадает.

На беке я фильтрую массив

Сортирую массив

Мне помогут подсказки по св-вам

Например у меня есть interface TagsRequestFilter {query?: string}

И он тоже одинаковый и там и там

Я конкретно о той части бекенда которая крайняя и которая взаимодействует с фронтом

Что там внутри у бека - отедльный разговор.

Там свои классы и своя кухня и т.п. и т.д.

Я лишь о том небольшом слое что обрабатывает запросы и возвращает ответы.

Google
Vlad
02.10.2017
21:47:28
вот эта часть частично местами общая.

Yury
02.10.2017
21:47:38
Слой отображения(контроллеры)?

Vlad
02.10.2017
21:47:59
Да, наверное для API это будет слой отображения.

https://github.com/sharikovvladislav/ng2-diary-book-backend/blob/master/functions/diary/get-my-diary-entries.js#L7

Кстати этот же файл хорошо пояснит чем мне неугоден nosql и почему хочется норм БД реляционную

если бы была такая я бы решил дело простым селектом.

и вот тут дальше мне в голову пришла мысль что о! орм! было же круто тогда в школе? можно и сейчас попробовать!

Yury
02.10.2017
21:50:10
Ну можно наверное и там и там использовать этот интерфейс, проблем нет. Но я бы не стал, тк интерфейсы на мой взгляд должны располагаться в том месте где они нужны, например при DIP.

Vlad
02.10.2017
21:50:23
и вот я говорю с вами сейчас =)

можно использовать. и у меня вся логика в общем-то в этом слое сосредоточена (ни в коем случае не претендую на правильность и тп). поэтому неплохо тут не косячить так глупо.

вот сейчас разработка фронта - рай, разработка бека - ад. если бы я не редеплоил проект так много вчера я бы ушёл спать в 2, а не в 4 =)

Не думайте о моем фронте-беке как о чем-то мудрёном и сложном. Всё проще некуда. Фронт Angular. Бек firebase. Прослойка между фронтом и беком: REST API. Бек: express обрабатывает эти запросы, работает с firebase ref и что-то оттуда возвращает (или добавляет или whatever). Всё просто просто. Очень маленький проект.

Yury
02.10.2017
21:56:00
Если клиент и сервер разные приложения. То к примеру если вам нужно поменять для сервера этот объект-интерфейс, то получается что он измениться и для фронта, хотя для фронта он не должен меняться.

Vlad
02.10.2017
21:56:11
Как же так?

Смотрите, я поменяю Tag.

Добавлю туда еще обязательный description.

Почему на фронте я не должен о нём знать?

Yury
02.10.2017
21:56:47
Тогда у вас не ДВА приложения, а ОДНО.

У вас нет границы получается.

Vlad
02.10.2017
21:57:05
Мы просто добавляем (или удаляем, изменяем) какое-то поле.

Google
Vlad
02.10.2017
21:57:09
Но погодите. Пусть будет два.

Вот отлично

Вы на сервере (бекендщики злые ага) удалили поле name из Tag

Yury
02.10.2017
21:57:40
Поэтому вы и делаете что то похожее на метеор

Vlad
02.10.2017
21:57:58
у вас есть X API ф-ий которые я (светлый воин фронтенда) вызываю

и тут внезапно вы такие не отдаете то на что у меня завязки много где есть.

1 момент, покажу

Yury
02.10.2017
21:59:30
Суть в том что этих завязок и не должно быть.

Фронт не зависит от моделей на бекенде

фронт зависит от api

это граница

Vlad
02.10.2017
21:59:56
У меня появились такие ошибки: ERROR in /Users/svlad/dev/ng2-diary-book/src/app/diary/containers/entry-create-container.ts (29,7): Type '{ date: Date; message: string; tags: undefined[]; }' is not assignable to type 'DiaryEntry'. Object literal may only specify known properties, and 'date' does not exist in type 'DiaryEntry'. ERROR in /Users/svlad/dev/ng2-diary-book/src/app/diary/services/diary-entry.ts (41,23): Property 'createDate' does not exist on type '{ $key?: string; id?: number; message: string; }'.

Как не должно быть зависимостей.

Окей поясните мне как правильно.

Да на самом деле я от вас получаю просто JSON

Yury
02.10.2017
22:00:31
Нет правильно или неправильно

Vlad
02.10.2017
22:00:35
Так вот у вас нет границы, а страдают конечные пользователи

Yury
02.10.2017
22:00:39
я просто говорю что у вас получается одно приложение

Vlad
02.10.2017
22:00:57
Потому что у них потом будет написано : нельзя прмиенять метод фильтр на undefined (tagIds какой-нибудь)

Yury
02.10.2017
22:00:57
и это похоже на метеор

Google
Vlad
02.10.2017
22:01:02
потому что бек его не прислал

а и кстати потом конечные пользователи винить будут во всем фронтенд, а бекенд будет белый и пушистый)

Yury
02.10.2017
22:01:58
при раздельный приложениях, бек работает с моделями, он не должен отдавать эти модели

Vlad
02.10.2017
22:02:07
повелевать фронтендщикам “так ребят вы тут разберитесь в логах, ошибка то на морде, а мы пока новые фичи попалим”

Да раздельное раздельное) Но как бы оно одно. Оно должно в целом работать.

Вот даже простейшая хотя бы вещь. ТайпСкрипт мне помогает не накосячить на фронте или на беке. Почему бы не использовать это?

Yury
02.10.2017
22:03:01
Тогда вы делаете одно цельное приложение front+back, вы пытаетесь сделать такую же магию как метеор

но я такое не юзаю, так что дальше помочь не могу)

Vlad
02.10.2017
22:03:14
Так и хорошо. В чём проблема?

Ага. Вы же тот самый злой бекендщик и “у вас ошибок нет” :troll: ?

Yury
02.10.2017
22:04:00
Нет никаких проблем, я вас в самом начале и посоветовал просто посмотреть на метеор)))))

Vlad
02.10.2017
22:04:22
Посмотрю тоже, спасибо.

На самом деле пока мы говорили прикинул прототип общей модели. Огонь же. Минимально необходимое - подстветка - работает и правильно работает. Мой мир стал чуточку лучше ?. Но typeorm вопрос будет открыт =) Но после курения метеора. Ща давайте спать.

Yury
02.10.2017
22:08:23
Мне еще работать)

Vlad
02.10.2017
22:09:09
Надеюсь вы просто из Владивостока и у вас 8 утра ?

Yury
02.10.2017
22:09:43
Nope - Moskva never спать

Kenya-West
03.10.2017
03:13:58
https://medium.com/web-on-the-edge/thinking-in-typescript-cb7f8a6434c0

Denis
03.10.2017
07:19:20
https://medium.com/@paul.souche/one-word-about-typescript-control-flow-and-union-types-discrimination-fc2cb1095d93?source=linkShare-60d353fea4d-1507015134

Google
andretshurotshka?❄️кде
03.10.2017
07:32:00
>inference in typescript

Статья ниочем

Artur
03.10.2017
09:17:38
Вижу что в @types есть указание версии typescript для которой типы написаны. А как то можно эту инфу использовать при установке типов?

обновление до ts 2.5 это боль :(

Aleh
03.10.2017
10:07:46
фигачить селекты как-то не оч?
орм это инструмент для решения другой задачи на другой границе. У вас проблема на границе клиента и бекенда, а орм - решение проблемы на границе бекенда и хранилища(рсубд)

Vlad
03.10.2017
10:08:18
@mkusher я описывал 2 проблемы

Одна из проблем на границе

И ее решить без ОРМ можно без проблем

А ОРМ - да, решение проблемы между беком и БД - всё так.

Aleh
03.10.2017
10:09:30
@mkusher я описывал 2 проблемы
видимо я заблудился при чтении и пропустил это

Artur
03.10.2017
11:54:53
Теперь если создаёшь jsx элемент через функцию-фабрику, лишние пропы являются ошибкой. А если через jsx - нет. Как то это... неконсистентно.

andretshurotshka?❄️кде
03.10.2017
12:05:11
Это в типах?

Artur
03.10.2017
12:09:39
точнее даже не так: если использовать спред-оператор, то лишние пропсы которые он добавляют считаются лишними на object literals, но не считаются таковыми в jsx

Vlad
03.10.2017
13:03:12
Товарищи. Есть некий nodejs модуль. Хочется добавить TypeScript. Сейчас в модуле написано: module.exports = function (x) {} Как сделать export в TypeScript так, чтобы это было преобразовано в module.exports?

andretshurotshka?❄️кде
03.10.2017
13:04:27
export = function () {}

не уверен что работает где-то кроме деклараций

я бы ес модули заюзал

Олег
03.10.2017
13:05:57
работает

Vlad
03.10.2017
14:21:30

Страница 367 из 669