
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 переменной

Сергей
21.03.2018
07:25:27

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

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

Дмитрий
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 выведет