@typescript_ru

Страница 559 из 669
?
27.03.2018
17:23:40
это реакт аппликуа, которая собирается вебпаком

?
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
Dmitry
28.03.2018
08:02:22
спасибо, буду пока копать)

Oleg
28.03.2018
08:04:10
спасибо, буду пока копать)
Посмотри кстати, какой интерфейс в тайпингах роутера, для Route render props

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 такая же?

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

Oleg
28.03.2018
09:38:11
хотя у меня без переопределения не работает
в общем максимум чего добился, с типизацией свойств https://codesandbox.io/s/n0o5vmrw80

<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 по особому обрабатывается?

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
или ты имеешь в виду что as по особому обрабатывается?
As это что-то типа сказать компилятору "чувак, поверь мне, здесь именно такой тип"

Oleg
28.03.2018
09:43:26
As это что-то типа сказать компилятору "чувак, поверь мне, здесь именно такой тип"
так чего он тогда ошибку не видит?) если уж мы согласны, что такой тип

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
Легкий флер наебалова

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

Artur
28.03.2018
11:21:33
Как называется то чувство, когда твоя программа работает так, как задумано?
Мне кажется на немецком языке есть отдельное слово для описания данного чувства

Triple
28.03.2018
11:25:06
Как называется то чувство, когда твоя программа работает так, как задумано?
Это признак мастерства, а не чувство) хотя тут от уровня сложности зависит

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
Я затрудняюсь что в таких ситуациях отвечать

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