
Aleksey
11.04.2018
09:53:39

Jack
11.04.2018
09:54:15

Artur
11.04.2018
09:54:19

Google

Artur
11.04.2018
09:54:46
классные аргументы, да?

Jack
11.04.2018
09:55:45

Artur
11.04.2018
09:56:01

Евгений
11.04.2018
09:56:11

Jack
11.04.2018
09:56:23

Aleksey
11.04.2018
09:56:28

Artur
11.04.2018
09:56:29

Дмитрий
11.04.2018
09:56:59

Jack
11.04.2018
09:57:46
А на самом деле angular + redux, вот это вещь

andretshurotshka?❄️кде
11.04.2018
09:57:48
5

Евгений
11.04.2018
09:57:49

Дмитрий
11.04.2018
09:57:57

Artur
11.04.2018
09:58:09

Google

Дмитрий
11.04.2018
09:58:53
и некоторые внутренние проекты
про ИБ для бизнеса
вот они, кстати, как раз «переписывали».
форкнули старый ИБ для физлиц и переписывают его на новый ангуляр
В теории с ангуляра на реакт можно «переписывать», если проект грамотно написан и бизнес логика в целом не сильно зависит от платформы
Но если проект грамотно написан, зачем переписывать?)

Aleksey
11.04.2018
10:11:17

Дмитрий
11.04.2018
10:11:52

InoY
11.04.2018
10:11:54
Так, товарищи фронтедеры, скажите мне пожалуйста, что нужно знать ньюфагу, чтобы сбацать проект на Тайпскрипте и Реакте (при условии, что я уже знаю и умею в реакт)?

Дмитрий
11.04.2018
10:11:58
каждые 6 недель переписываем

Aleksey
11.04.2018
10:12:27

Дмитрий
11.04.2018
10:12:55

Aleksey
11.04.2018
10:13:16


Max
11.04.2018
10:17:46
а… ну глубокое наследование это в принципе нехорошо ни где
Не соглашусь, после того как я понял главный профит наследования я теперь считаю наследование круче композиции (а множественное наследование еще лучше) При композиции каждое переопределение какого-то поведения требует создать объект. В итоге если у нас цепочка из 10 переопределений (например 10 хокков на реакт-компоненте) то на списке из тысячу объектов будет создано в сумме 10 тысяч объектов - а это тратится сpu на создание объектов, тратится в n раз больше памяти, и главное тратится в время на сборку всех этих объектов сборщиком мусора потом. Причем для хокков реакт-компонентов это не только время на создание объектов - это еще время на увеличения diff-а при рендере из-за n-кратного увеличения количества компонентов. А при наследовании для тысячного списка будет только тысячу объектов в рантайме - то есть, сколько бы раз бы не наследовались и добавляли или переопределяли методы, сколько бы цепочек переопределений бы не строили - да хоть тысячу хокков - в рантайме будет создан только один объект а не в n-раз больше. То есть наследование это механизм который позволяет вынести очень много работы в compile-timе и после того как я это понял я теперь не понимаю людей которые говорят что композиция лучше наследования


Дмитрий
11.04.2018
10:18:28
Рип
Даже пояснять ничего не нужно )

Max
11.04.2018
10:25:19
Ну дык, а что я неправ? Композиция явно хуже по производительности чем наследование

Max
11.04.2018
10:26:33
в 99% кейсов это похуй
что будет 10 обьектов а не один
а те кто попадают в 1% уже начинают решать эти проблемы сами

Google

Max
11.04.2018
10:54:27
С реакт-компонентами там будет далеко не 1 процент. Реакт в рендер-методе на каждый перерендер создает новые объекты и цепочка из 10 хокков выльется в создании 10 объектов вместо одного и потом diff-а десяти компонентов вместо одного. И для списка из тысячу таких компонентов разница думаю будет заметна

Artur
11.04.2018
10:55:14

Дмитрий
11.04.2018
10:56:08
прям вот удачи

Max
11.04.2018
10:57:25
++

Олег
11.04.2018
10:58:15

Игорь
11.04.2018
11:01:08
Ну вцелом я с Богданом согласен.
Ну наследоваться по разному можно...
Главное делать это с умом

Max
11.04.2018
11:12:25
чувак, удачи тебе с разгребанием адовой лапши из реакт-компонентов, наследующихся друг от друга
А в каких случаях это будет адовая лапша? Чем кардинально отличается такой хокк с наследованием
functon withProps(Component, props){
return class extends Component {
static defaultProps = {
...(Component.defaultProps || {}),
...props
}
}
}от такого хокка с композицией
functon withProps(Component, props){
return class extends React.Component {
render(){
return <Component {...props}/>
}
}
}?
И там и там хокки, только с композицией каждый хокк приводит к созданию еще одного объекта в рендере, дополнительного диффа в новом компоненте реактом и еще одной ступеньке в лесенке компонентов в девтулзах а с наследованием нет

Дмитрий
11.04.2018
11:14:17
Ах, если бы всё было так просто
На практике у тебя будет гора миксинов, конфликты имен, неявные зависимости, ад и израиль

andretshurotshka?❄️кде
11.04.2018
11:16:07

anatolii
11.04.2018
11:24:37

andretshurotshka?❄️кде
11.04.2018
11:24:42

Дмитрий
11.04.2018
11:24:58

anatolii
11.04.2018
11:26:00
Вы так спорите постоянно как буд-то композиция это замена наследования. Нет, это дополнительная возможность в архитектуре
В многих случаях их можно заменить друг другом, и там выбирает кто кому нравится, но в некоторых нет

InoY
11.04.2018
12:49:46

Дмитрий
11.04.2018
12:50:26
и готово

Le
11.04.2018
12:50:35

Google

InoY
11.04.2018
12:50:45
Вай нот?

Дмитрий
11.04.2018
12:50:47
если без этого, то тайпинги не забыть поставить
на tsc не полагаться, бандлить вебпаком через awesome-typescript-loader
вопрос очень абстрактный у тебя

InoY
11.04.2018
12:51:48
и готово
Ну я спрашивал о вещах типа "бабель тебе уже не нужен будет" и, допустим, "настрой вебпак вот так" или "вебпак тоже выкинь" и т.п и т.д.

Дмитрий
11.04.2018
12:52:12
без вебпака не получится

InoY
11.04.2018
12:52:38
Ок, спасибо. Ещё что-нибудь?

Дмитрий
11.04.2018
12:52:38
даже если бы у тебя не было других ассетов кроме жс, всё равно не вышло бы по-человечески всё сделать
да больше не нужно ничего вроде
два лоадера есть, и awesome typescript loader вроде как побыстрее typescript loader
а вообще реально проще всего заюзать какой-нибудь из многочисленных реакт-тс стартер-китов

InoY
11.04.2018
12:54:01
То есть, теоретически я могу взть свой реакт стартер кит, прикрутить к нему лоадер и готово?

Дмитрий
11.04.2018
12:54:36
ну да

InoY
11.04.2018
12:54:47
Спасибо

Max
11.04.2018
13:57:19
Всем привет.
Есть ли возможность запретить дочернему классу переопределять метод родительского?

Andrii
11.04.2018
14:01:29
Конечно
Посмотри так на него пронзительно
И пальцем «но-но-но!»

Andrey
11.04.2018
14:02:02
sealed или final почему-то не хотят добавлять, к сожалению :(

Google

Artur
11.04.2018
14:03:18
В ts-loader недавно добавили ещё experimental watch api, но его пока не тестил, обещают ещё более ускорение

Max
11.04.2018
14:04:41
круто
надо попробовать

Andrey
11.04.2018
14:04:45
↑ Тру стори, самое быстрое решение по результатам моих тестов на нескольких проектах. Тслинт вообще иногда неюзабелен тслинт-лоудером (по полчаса работает)

Sergey
11.04.2018
14:05:12
а по flow тут тоже отвечают?

Дмитрий
11.04.2018
14:05:15

Artur
11.04.2018
14:06:25
ForkTsCheckerWebpackPlugin можно перевести в async режим и тогда бандл будет готов ещё до тайпчекинга, что удобно когда например только стили колбасишь
class SomeClass {
method() {
return this.other()
}
other() {
return 123
}
}
const a = new SomeClass();
const method = a.method
method()
Такую лажу на TS как то можно отлавливать?
playground со всеми включенными галочками не ругается, а в рантайме ошибка

Andrey
11.04.2018
19:55:30
only-arrow-functions не решает случайно эту же проблему с другой стороны?

Max
11.04.2018
20:10:10
ребята, как сконвертить type A = 'a' | 'A'; в переменную рантайма const myA = ['a', 'b']?