
?
27.03.2018
17:23:40
это реакт аппликуа, которая собирается вебпаком

andretshurotshka?❄️кде
27.03.2018
17:23:50

?
27.03.2018
17:24:22
ммм, ну, импорт работает, если начало пути указа - вебпак из бадла класс достает

Google

?
27.03.2018
17:25:13
import(ui/${vendor}/${componentName})
вот это импортирует нормально

Alex
27.03.2018
18:48:28
в классе же вообще можно только объявлять поля и методы
а тут вызов прямо в теле класса

?
27.03.2018
19:00:44
псеводкод
показать, что все компоненты наследуются от Base, где есть функция динамического импорта, и что каждая компонента может таким образом импортировать другие компоненты

Aleh
27.03.2018
19:02:03
не делайте так
все очень просто

?
27.03.2018
19:02:41
у всех компонент куча общего кода
не наследовать очень грустно

Aleh
27.03.2018
19:03:01
пожалуйста, не надо использовать наследование для реюза кода :(
потом же кому-то с этим работать
для реюза кода, код можно выносить в функции, другие объекты, другие компоненты и т.д.

Google

Aleh
27.03.2018
19:04:09
и все будет хорошо, честно

?
27.03.2018
19:05:52
этот кто-то я и есть, рефакторинг делаю
очевидно, что тут не только реюз кода
действительно, не тот канал, как в самом начале было сказано :)

Евгений
27.03.2018
21:00:38
не наследовать очень грустно
Любое наследствание, можно и нужно заменять композицией, за исключением тупых моделей, дто, сущностей. Вы либо вопрос поставьте верно, либо код человеческий, а то вас могут ссаными тряпками по гнать

anatolii
27.03.2018
21:01:44
Дето я это уже слышал, в полку фанатиков одной стороны прибыло

Евгений
27.03.2018
21:07:33
Да причем тут...? Просто 20 сообщение бессмысленного флуда, по хорошему варн не помешал бы

anatolii
27.03.2018
21:08:03
Я к фразе прицепился ?
Ничего личного

Dmitry
28.03.2018
07:42:37
знатоки ts, подскажите как данный пример из react-router переписать на typescript (интересует та часть, где деструктуризация props)

Oleg
28.03.2018
07:52:24
И интерфейс его Props должен не конфликтовать с интерфейсом props, которые в render функции ты прокидываешь спредом
Не увидел, что Component это не интерфейс, а присваивание

Dmitry
28.03.2018
07:57:33
извини, пока не очень понял. я нуб в ts. не могу понять, как у переменной Component объявить тип (any хотяб), чтоб компилятор не ругался
тут деструктуризация с присваиванием

Oleg
28.03.2018
07:58:41
Тогда надо интерфейс props для PrivateRoute описать, все то же самое с component типом

Dmitry
28.03.2018
08:00:23
а если в props-ах переменное число свойств? для этого в rest оставшиеся свойства копируются. как интерфейс в таком случае описать?

Oleg
28.03.2018
08:01:16
interface IProps {
component: ComponentType<RouteProps>;
...
}
const PrivateRoute = (props: IProps) => ...

Google

Oleg
28.03.2018
08:01:40
Доеду до компа, отпишусь

Dmitry
28.03.2018
08:02:22
спасибо, буду пока копать)

Oleg
28.03.2018
08:04:10

Dmitry
28.03.2018
08:20:27
вот это ты имеешь ввиду?

Maxim
28.03.2018
08:22:00
Пожалей свои глаза

Dmitry
28.03.2018
08:31:05
вот так вроде работает, с типами пока не разобрался до конца

Oleg
28.03.2018
08:38:21
https://codesandbox.io/s/oj5l4rpj0q
но тут есть минус
как через <PrivateRoute component={Foo} customPropFoo="qwerty" /> в компонент передать свойства только для этого компонента
есть такая необходимость? обновлю

Dmitry
28.03.2018
08:41:10
Олег, спасибо за помощь! Пока такой необходимости вроде бы нет)
правильно ли я понимаю, что component в IPrivateRouteProps можно не переопределять, ведь сигнатура в RouteProps такая же?

Oleg
28.03.2018
08:52:04

Dmitry
28.03.2018
08:52:32
хотя у меня без переопределения не работает

Oleg
28.03.2018
09:38:11
<PrivateRoute
component={Bar}
componentProps={
{
customProp: 12345,
customProp2: "qwerty"
} as IBarProps
}
/>
PrivateRoute видит, что дженерик P равен IBarProps
Но при этом не считает левое свойство customProp2 за ошибку
не понимаю почему

andretshurotshka?❄️кде
28.03.2018
09:40:16
потому что у тебя каст

Google

andretshurotshka?❄️кде
28.03.2018
09:40:55
я бы по дефолту флаг сделал который бы запретил касты

Aleh
28.03.2018
09:41:27

andretshurotshka?❄️кде
28.03.2018
09:42:00
)))

Oleg
28.03.2018
09:42:01
ts выводит function PrivateRoute<IBarProps>(...): JSX.Element, то есть все как надо
или ты имеешь в виду что as по особому обрабатывается?

Aleh
28.03.2018
09:42:29

andretshurotshka?❄️кде
28.03.2018
09:42:31
жди вот этого https://github.com/Microsoft/TypeScript/pull/22415

Oleg
28.03.2018
09:42:56
Убери as IBarProps
вот тут и проблема, тогда P дженерик не IBarProps, а равен содержимому свойства componentProps

Aleh
28.03.2018
09:43:02

Oleg
28.03.2018
09:43:26

Aleh
28.03.2018
09:43:32

Oleg
28.03.2018
09:43:45
аа ну я понял
и как бы уже не сравнивает содержание и тип

Aleh
28.03.2018
09:44:25
Ну почти, немного сравнивает

Oleg
28.03.2018
09:49:30
Ну почти, немного сравнивает
если есть пару минут демку посмотреть, как все-таки типизировать эти компоненты?
Смысл в том, что бы в PrivateRoute передавать компоненты с разными свойствами, прокидывать эти свойства, и не терять типы
interface IComponentProps<P> {
component: React.ComponentType<P & RouteComponentProps<any»;
componentProps: P;
}
const PrivateRoute = <P>({ component: Component, componentProps }: IComponentProps<P> ) => (
<Route
render={(props: RouteComponentProps<any>) => (
«Component {...componentProps} {...props} />
)}
)
по ходу этому PrivateRoute проще сделать такой же render, как у Route))

andretshurotshka?❄️кде
28.03.2018
09:50:54
сделать два компонента

Oleg
28.03.2018
09:57:45
Во https://codesandbox.io/s/ojz9kkykz9

Google

Oleg
28.03.2018
09:58:47
но никаких дженериков сомнительных

Roman
28.03.2018
11:15:29
Как называется то чувство, когда твоя программа работает так, как задумано?

Max
28.03.2018
11:15:43
Легкий флер наебалова

Дмитрий
28.03.2018
11:20:38

Roman
28.03.2018
11:21:03
Ахахаха, наверное)

Artur
28.03.2018
11:21:33

Mikhail
28.03.2018
11:24:27

Triple
28.03.2018
11:25:06

Roman
28.03.2018
11:26:18

Max
28.03.2018
11:37:09

Roman
28.03.2018
11:38:01
Объективизация - это офигенное чувство!

Max
28.03.2018
11:39:56
Да, говорят, одно из важнейших для человека)

Abdulvakhab
28.03.2018
11:55:35
Простите за глупый вопрос, что может препятствовать хапуску кода. Вроде следую книге. А получаю ошибку: ReferenceError: Export is not defined
То что не было в книге: я поставил ссылку на файл test.js в index.html
Простите, знаю что вопрос скорее всего тупой. Но не знаю как правильно запускать чтобы все работало

andretshurotshka?❄️кде
28.03.2018
12:00:19
ее скриншоты

Le
28.03.2018
12:01:09
Я затрудняюсь что в таких ситуациях отвечать