
Aleh
11.08.2016
06:35:31
https://twitter.com/angularjs/status/763134762496045056

Sergey
11.08.2016
07:26:38
http://blog.lacolaco.net/post/dynamic-component-creation-in-angular-2-rc-5/

Александр Щедрин
11.08.2016
09:30:56
Подскажите. Тупой вопрос... У меня бэкенд на ноде (TypeScript) и ангулар приложение. Общие сущности описывать в виде интерфейсов или классов? )

Alexander
11.08.2016
09:31:22
это зависит от конкретного подхода

Google

Alexander
11.08.2016
09:35:20
в TypeScript (я могу ошибаться, если так — поправльте) разницы особой нет. В классах могут добавляться еще функции, а интерфейс — это аналог структур в C++). Ещ возможен подход, который используется в Java или том же PHP, когда интрефейс — это "нулевой уровень абстракции", эдакое неявное условие, к которому могут подойти классы любой реализации, не имеющие родственной связи с, допустим, абстрактными классами-полуфабрикатами какой-то классовой библиотеки. А сдругой стороны — они это гарантия унификации отдельных частей.
Но вот, кстати, интересный вопрос
Что хороший тон в TypeScript?

Maksim
11.08.2016
09:36:01
Мы использовали интерфейсы

Alexander
11.08.2016
09:36:05
Интерфейсы — это просто структуры, или это интерфейсы в понимании Java?

Maksim
11.08.2016
09:36:16
Потом перешли на классы, когда поняли что разницы нету в итоге
После компиляции оно по сути одно и тоже

Alexander
11.08.2016
09:36:40
Ну здесь больше вопрос идеологический

Maksim
11.08.2016
09:36:52
Почему перешли - потому что логический это классы, а не интерфейсы

Alexander
11.08.2016
09:36:53
потому что в итоге — это все просто JS-объект

Vladimir
11.08.2016
09:37:10

Maksim
11.08.2016
09:37:23
В любом ооп языке это были бы классы. Поэтому мы выбрали из
Их*

Google

Maksim
11.08.2016
09:39:30
Кто-то на вебпак кли перешел уже, кстати?

Александр Щедрин
11.08.2016
09:40:31
@AsTex Ну по сути ts же просто сахар. А какие могут быть проблемы?

Maksim
11.08.2016
09:40:56
Я сейчас попытался, но при компиляции sass где есть импорт другого sass файла из node_modules у меня вваливается нпм
Без всяких слов

Vladimir
11.08.2016
09:41:45

Maksim
11.08.2016
09:42:51
Ситуация неотлаживаемая короче. Сейчас попробую взять сассы из нпм к себе в сорцы, надежды что это сработает особой нету, но если сработает то как временное решение норм

Vladimir
11.08.2016
09:45:29

Александр Щедрин
11.08.2016
09:46:30

Vladimir
11.08.2016
09:47:05
А Rx к node не подвязывади?

Алексей
11.08.2016
09:50:42

Vladimir
11.08.2016
09:55:18

Artem
11.08.2016
10:02:00
По-моему отличие интерфейсов от классов в ts все же есть - в классах кроме свойств можно методы определять и частично обработку данных в класс переносить. Если не прав - поправляйте.
Как мне показалось по сравнению с другими языками идеологически вернее все-таки юзать классы, не ограничивая себя одним хранением данных в моделе.

Roman
11.08.2016
10:05:42
В интерфейсах в TS как и в других языках только объявление без конкретной реализации. Либо я плохо читал доку. И интерфейсы в конечный скомпиленный код никак не попадают по этой же причине
в отличие от абстрактных классов, которые нельзя инстанцировать но они могут содержать реализацию методов

Artem
11.08.2016
10:06:25
Интерфейсы насколько я понял, просто обертка для объектов
Чтобы типизации добавить

Alexander
11.08.2016
10:07:26
> В интерфейсах в TS как и в других языках только объявление без конкретной реализации.
Нет, там можно объявить переменную типа интерфейс и передать ей объект. TS будет следить за тем, чтобы объект соотвествовал объявленному интерфейсу.
Без конструктора
Просто как структуры в C++

Google

Алексей
11.08.2016
10:08:13

Roman
11.08.2016
10:08:15
я честно не помню в чем разница в TS между type и interface, в type можно также описать объект. Но implements SomeType не помню можно или нет

Alexander
11.08.2016
10:08:50

Roman
11.08.2016
10:08:59

Алексей
11.08.2016
10:09:29
Интерфейсов у обьекта может быть куча. Тип - только один

Vladimir
11.08.2016
10:10:01

Alexander
11.08.2016
10:10:07

Artem
11.08.2016
10:11:03
Модельную структуру приложения имхо проблемно строить на одних интерфейсах. Вот к примеру такая задача - есть объект Response от сервера, нужно по набору условий вытащить признак его успешности. В классах это решается геттером с условиями, а интерфейс придется внешним методом обрабатывать

Alexander
11.08.2016
10:11:08
В том и дело, что они могут (и часто, если посмотреть родные библиотеки ng2) использу/тся именно как структуры

Roman
11.08.2016
10:12:34
Какая книга кстати наиболее всеобъемлющая по TS? TypeScript Deep Dive показалось мало. Некоторые вещи лучше в офф доке освещены. Пока наткнулся на Mastering TypeScript

Alexander
11.08.2016
10:13:30
На первом проекте я хотел сначала использовать логику, к которой привык на других языках — сначала объявляешь интерфейсы, потом реализации классов для них. Но когда понял, что <объект класса implements I> instanceof <интерфейс I> === false, забил на это дело, и стал использовать интерфейсы как структуры
и еще была практика, когда переменная, для которой указан тип интерфейс CatalogEntity не пропускает без жесткого приведения объект класса CatalogCategory, который implements от CatalogEntity

Alexander
11.08.2016
10:16:19
точнее не переменная, там возврат был функции

Алексей
11.08.2016
10:16:23
Интерфейсы позволяют достичь Dependency Invertion Principle из SOLID

Roman
11.08.2016
10:17:38
Это да

Alexander
11.08.2016
10:17:52

Алексей
11.08.2016
10:20:09
Работает. Я понимаю о чем ты говоришь, много чего не доступно в TS, всяких удобных способов работы с ними нет, но интерфейсы в TS полноценные. Они выполняют свою базовую функциональость

Alexander
11.08.2016
10:26:20

Алексей
11.08.2016
10:27:09
Можно пример в студию?

Alexander
11.08.2016
10:27:48
Т.е., с одной стороны ты не можешь провести соответствующий логике элемент (в моем понимании, принадлежность к интерфейсу — это еще и своеобразный ключ), с другой стороны — если ты сделаешь жесткую типизацию, то туда можно просунуть что угодно.

Google

Alexander
11.08.2016
10:27:58
Минуту, постараюсь найти сейчас
Хмм, тот конкретный кусок сейчас не актуален, потому что я переделал метод чтобы он возвращал Observable
В истории версий долго искать
но у тебя, я так понимаю, таких проблем не было?
@Ai_boy
На скорую руку состряпал пример, щас скину скрины.
Если я что-то не учел и сделал не так, поправь

Admin
ERROR: S client not available

Alexander
11.08.2016
10:39:14
вот привмер
и

Алексей
11.08.2016
10:39:18
Ок.
Щас посмотрю

Alexander
11.08.2016
10:39:42
и вот показываю сам класс — он реализует тот интерфейс
ну и самому интерфейсу, понятно, соотвествует
так, я как файл пример скинул
минуту

Алексей
11.08.2016
10:41:24
@koshevy а какой у тебя TS ? ( просто чтобы быть on same page ? )

Alexander
11.08.2016
10:41:35
так, и тут данных нет. в том случае не пустой объект возвращался
минуту
1.8
в июне, правда, кажется обновлялся

Google

Алексей
11.08.2016
10:44:00
щас посмотрю.. пока код не наберу не пойму в чем проблема :) ( кстати можешь продублировать в группу по TS - там возможно быстрее меня ответят )
https://telegram.me/typescript_ru

Alexander
11.08.2016
10:44:23
ну я как-то не искла ответа, если честно)
просто поделился раз тема пошла
но за группу спасибо)
Мое мнение по этому делу такое — TS-это препроцессор, и не надо ждать от него магии) Это лучше чем чистый JS — на том спасибо)

Roman
11.08.2016
10:45:25
@Ai_boy О, тоже не знал про эту группу) Спасибо)

Alexander
11.08.2016
10:46:16
Самое главное, можно организовать привычный ООП-мирок и DI, остальное не смертельно)

Dmitry
11.08.2016
10:49:37
Возможно, ты прав. Но вот у меня был один конкретный вопрос: если я указываю в качестве результата функции или аргумента интерфейс, то почему нельзя передать ему класс-реализацию интерфейса, без того, чтобы компилятор отругался или без жесткого приведения (которое пропустит, даже если ты затупил и там оказался скаляр)? Это же ломает базовые принципы?
вроде воркает. первый пример
второй да. не работает. но это вроде и ожидаемо

Alexander
11.08.2016
10:53:17
ну во втором класс передается ж
а на возврат?
может быть, с аргументами — это мои ложные воспоминания)
но вот в возвратом я постарался воссоздать ситуацию
Эта группа больше не существует