
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
точнее не переменная, там возврат был функции

Алексей
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
На скорую руку состряпал пример, щас скину скрины.
Если я что-то не учел и сделал не так, поправь
вот привмер
и

Алексей
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
в июне, правда, кажется обновлялся

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

Google

Алексей
11.08.2016
10:44:08
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
ну во втором класс передается ж
а на возврат?
может быть, с аргументами — это мои ложные воспоминания)
но вот в возвратом я постарался воссоздать ситуацию
Эта группа больше не существует