@typescript_ru

Страница 551 из 669
Max
20.03.2018
10:57:42
здесь я показал оба случая https://goo.gl/YsrmGa

andretshurotshka?❄️кде
20.03.2018
10:58:52
мне кажется он там свалился в рекурсию

и выкинул any

Олег
20.03.2018
10:59:08
укажи T в чем проблема

Google
andretshurotshka?❄️кде
20.03.2018
10:59:32
в том что типы лень писать

Олег
20.03.2018
10:59:58
можно сказать спасибо тсу хоть что то вывел

хотя T должен быть undefined в этом случае

andretshurotshka?❄️кде
20.03.2018
11:01:12


Дмитрий
20.03.2018
11:02:20
в том что типы лень писать
Писать не лень, поддерживать западло) Фактически каждый эксплиситно заданный тип вроде new Bar<T>() это очередное место которое нужно менять при рефакторинге

Так как вместо вывода типа происходит каст, который совпадает с логикой работы программы лишь до поры до времени

Олег
20.03.2018
11:03:51
... бла бла бла ... тс ... бла бла ... юзайте флоу

Max
20.03.2018
11:04:31


Дмитрий
20.03.2018
11:04:33
Заметьте, я ни слова об этом не сказал

"но ход ваших мыслей мне нравится"

Олег
20.03.2018
11:05:01
я чувствую что к этому пришло бы

andretshurotshka?❄️кде
20.03.2018
11:05:56


че за прикол)

Google
andretshurotshka?❄️кде
20.03.2018
11:06:04
так можно что ли

Дмитрий
20.03.2018
11:06:24
Эээ это же не валидно скорее всего

andretshurotshka?❄️кде
20.03.2018
11:06:29
не падает

Дмитрий
20.03.2018
11:06:38
Лоол

Bar<T = ???> U is not defined в данный момент

andretshurotshka?❄️кде
20.03.2018
11:07:33
эт где

Дмитрий
20.03.2018
11:07:43
У тебя, по логике

kana
20.03.2018
11:10:04
minimal complete definition?)

andretshurotshka?❄️кде
20.03.2018
11:10:08
а по тс



?

а в playground нету conditional?

Max
20.03.2018
11:14:35
блин, а так все работает https://www.typescriptlang.org/play/index.html#src=interface%20IFooOptions%3CK%20extends%20string%3E%20%7B%0A%20%20name%3F%3A%20string%3B%0A%20%20value%3F%3A%20number%3B%0A%20%20fn%3F%3A%20(otherFoos%3A%20%7B%5Bkey%20in%20K%5D%3A%20string%20%7D)%20%3D%3E%20void%3B%0A%7D%0A%0Aclass%20Bar%3CT%3E%20%7B%0A%20%20t%3A%20%7B%5Bkey%20in%20keyof%20T%5D%3A%20IFooOptions%3Ckeyof%20T%3E%20%7D%0A%20%20constructor(foos%3A%20%7B%5Bkey%20in%20keyof%20T%5D%3A%20IFooOptions%3Ckeyof%20T%3E%20%7D)%20%7B%0A%20%20%20%20%2F%2F%20...%0A%20%20%7D%0A%7D%0A%0A%2F%2F%20%D0%97%D0%B4%D0%B5%D1%81%D1%8C%20%D1%82%D0%B8%D0%BF%20otherFoos%20%D0%BD%D0%B5%20%D0%B2%D1%8B%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%2C%20%D1%85%D0%BE%D1%82%D1%8F%20%D1%82%D0%B8%D0%BF%20fn%20%D0%B2%D1%8B%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%0Aconst%20bar%20%3D%20new%20Bar(%7B%0A%20%20fisrtFoo%3A%20%7B%0A%20%20%20%20name%3A%20%22john%22%2C%0A%20%20%20%20value%3A%203%0A%20%20%7D%2C%0A%20%20secondFoo%3A%20%7B%0A%20%20%20%20name%3A%20'sandra'%2C%0A%20%20%20%20fn%3A%20otherFoos%20%3D%3E%20%7B%0A%20%20%20%20%20%20otherFoos.nonexist%20%3D%202%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D)%3B%0A%0Aconst%20myFooObj%3A%20typeof%20bar.t%20%3D%20%7B%0A%20%20fisrtFoo%3A%20%7B%0A%20%20%20%20name%3A%20%22john%22%2C%0A%20%20%20%20value%3A%203%0A%20%20%7D%2C%0A%20%20secondFoo%3A%20%7B%0A%20%20%20%20name%3A%20'sandra'%2C%0A%20%20%20%20fn%3A%20otherFoos%20%3D%3E%20%7B%0A%20%20%20%20%20%20otherFoos.nonexist%20%3D%202%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D

походу баг в ТС

andretshurotshka?❄️кде
20.03.2018
11:15:50
лол

он не может одновременно выводить оттуда

и одновременно писать

Max
20.03.2018
11:17:14
походу

Дмитрий
20.03.2018
11:19:28


Алексей
20.03.2018
11:20:24
А что с ними не так (простите за глупый вопрос)?

Google
Дмитрий
20.03.2018
11:23:40
А что с ними не так (простите за глупый вопрос)?
Ну вот всё что выше так или иначе является проблемой с контрвариантами, условно говоря с контрактами на входе

Олег
20.03.2018
12:41:46
тревога красный уровень

Anna
20.03.2018
12:52:14
Что за сексизм? Вдруг девочка на каком-нибудь сишарпе пишет?

Igor
20.03.2018
12:55:09
а 923 это дата рождения?

Олег
20.03.2018
12:55:49
ладно бы это было во флоу чате...)

Anna
20.03.2018
12:58:26
я и тебе не верю
Релакс, я толстый бородатый программист, который притворяется девочкой, чтобы охотнее на глупые вопросы отвечали ))

Max
21.03.2018
07:22:46
В TypeScript 2.8 появится новый keyword,"infer". Кто-нибудь понял до конца,что он делает? Я так понял,что он возвращает тип generic переменной

Max
21.03.2018
07:26:06
Выводит тип же
А есть ли pull request, или issue, для этой штуки? Я б прочитал

Friedrich
21.03.2018
07:26:22
Правда, я пока не понял, чо оно делает.

Сергей
21.03.2018
07:28:35
По идее должно работать и без этого параметра

Но это вам не флоу

Max
21.03.2018
07:30:04
Friedrich
21.03.2018
07:30:20
Кажись, оно в типовыражении объявляет именованный плейсхолдер, и ты дальше можешь типом из этого плейсхолдера пользоваться

Max
21.03.2018
07:30:40
Это создание нового типа, кое значение зависит от контекста.

Friedrich
21.03.2018
07:30:41
Вот у него в примере T extends (...args: any[]) => infer R — это вводит типопеременную R, так?

Сергей
21.03.2018
07:35:35
И возвращаемое значение функции

Google
Admin
ERROR: S client not available

Сергей
21.03.2018
07:35:54
Помешает его тип в R

Friedrich
21.03.2018
07:36:07
Ок, я так и понял.

Le
21.03.2018
08:40:32
А есть ли pull request, или issue, для этой штуки? Я б прочитал
Полно, если честно, я на штуки 3 подписан ?

Jerk
21.03.2018
10:09:07
Unblock Blockchain Hackathon! В апреля пройдёт хакатон для разработчиков ПО, backend-разработчиков, frontend-разработчиков и ПО-аналитиков. Ценные призы, реальные задачи, нетворкинг, возможность проявить себя - https://binarydistrict.com/ru/courses/blockchain-hackathon/

Дмитрий
21.03.2018
15:29:08
interface A { <A>(opts: [A]): A <A, B>(opts: [A, B]): A & B <A, B, C>(opts: [A, B, C]): A & B & C } Есть способы как-то такие вещи сократить?

А то когда в массиве может быть десяток элементов, и на каждый - по три дженерик-параметра, какой-то ад получается

Vladimir
21.03.2018
15:34:50
Вроде нет

Oleg
21.03.2018
18:06:41
interface A { <A>(opts: [A]): A <A, B>(opts: [A, B]): A & B <A, B, C>(opts: [A, B, C]): A & B & C } Есть способы как-то такие вещи сократить?
если разный тип аргументов, то иначе никак, поэтому в некритичный случаях произвольные аргументы (...args) => doSmth(...args) можно так и оставлять, как any

Дмитрий
21.03.2018
18:07:09
критичный случай)

Oleg
21.03.2018
18:09:16
критичный случай)
https://github.com/reactjs/reselect/blob/master/src/index.d.ts#L277 меня такие вещи в ужас приводят)

Дмитрий
21.03.2018
18:09:42
да

в тайпингах рамды, например, та же дичь происходит

Artur
21.03.2018
18:10:57
В скале тоже самое кстати

Дмитрий
21.03.2018
18:11:43
У меня в итоге сократилось до чего-то типа такого type T = <A, B, C, Combo extends A & B & C>(opts: [A] | [A, B] | [A, B, C]) => Combo

Дмитрий
21.03.2018
18:12:03
Генерить где-нибудь в бэкграунде, я хз. Способов порешать это в автоматическом режиме я не нашёл

Дмитрий
21.03.2018
18:12:37
С учетом того, что дженерик параметров у меня не 3, а 30, а массив может из 10 элементов состоять, сэкономил строк 150

типы всё так же выводятся, как и выводились, в поведении разницы пока не заметил

Google
Oleg
21.03.2018
18:16:52
У меня в итоге сократилось до чего-то типа такого type T = <A, B, C, Combo extends A & B & C>(opts: [A] | [A, B] | [A, B, C]) => Combo
компилятор вроде может докопаться до [A] | [A, B] | [A, B, C], когда к C обратишься, скажет что нет такого

Дмитрий
21.03.2018
18:17:11
это точно докопается

но я ж не обращаюсь по индексу к элементам массива

Oleg
21.03.2018
18:17:51
а, ну еще же джереники указывать придется, когда не надо

или уже завезли опциональные дженерики?

Дмитрий
21.03.2018
18:18:07
В скале тоже самое кстати
В скале вообще на удивление похожие проблемы кстати

Дмитрий
21.03.2018
18:18:12
Это ж функция

Artur
21.03.2018
18:18:35
Oleg
21.03.2018
18:18:40
а, сам ts выведет

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