
Aleh
13.05.2018
12:19:56
Перестраиваться на очень похожий на настоящий ооп в жс с типами

andretshurotshka?❄️кде
13.05.2018
12:23:39

Mikhail
13.05.2018
12:45:37
где есть норм ооп
Ждём, когда начнётся холивар про Алана Кея, наследование и Smalltalk

Google

Sergey
13.05.2018
13:10:01
Ну это обсосали уже сто раз, начиная с банды четырёх и далее

Aleh
13.05.2018
13:19:27

Sergey
13.05.2018
13:22:22
Эм
Это к чему?
Интерфейс подталкивает к определённому способу кодирования
Как минимум его нельзя new)
Фабрики, di, вот это всё

Aleh
13.05.2018
13:25:34
Типу тоже нельзя new

Sergey
13.05.2018
13:26:01
Так речь вроде про классы вс интерфейсы

Aleh
13.05.2018
13:26:19
Да нет никакого vs.

Sergey
13.05.2018
13:26:22
type в тс классный, кто ж спорит

Google

Alice
13.05.2018
13:30:16

Sergey
13.05.2018
13:33:26

Friedrich
13.05.2018
14:23:26
Я сначала тоже так делал, но потом понял, что это бессмысленно.
В итоге сейчас пишу без префиксов.

Alice
13.05.2018
14:43:04

Friedrich
13.05.2018
14:43:25

Alice
13.05.2018
14:44:19

Friedrich
13.05.2018
14:44:29
Типы выполняются.
Интерфейсы выполняются лениво.
Кажется, моя остановочка!

Alice
13.05.2018
14:44:48
(Хотя хоть убей, не понимаю, почему типы они решили выполнять строго.)

Friedrich
13.05.2018
14:45:13
Мне это неприятно.

Alice
13.05.2018
14:46:02
Ну.

Friedrich
13.05.2018
14:46:11
И я ничего не понял, если что. Ты про эти новые условные типы?

Alice
13.05.2018
14:46:15
¯\_(ツ)_/¯

Friedrich
13.05.2018
14:46:21
Так там, вроде, всё одинаково выполняется. Нету условных интерфейсов.

Alice
13.05.2018
14:46:26
Про то, что интерфейсы можно рекурсивные, а типы — нет.

Google

Alice
13.05.2018
14:47:31
И последнее делает мне очень-очень больно.

Friedrich
13.05.2018
14:47:58
type Foo = {
self: Foo;
}
Сконпелировалось.
А как нельзя?
А, ок, CRTP не рабоотает.
type Foo2<T> = {
self: Foo2<T>
}
type Foo3 = Foo2<Foo3>; // Type alias 'Foo3' circularly references itself.

Alice
13.05.2018
14:49:31
Не.
Блч.

Friedrich
13.05.2018
14:50:09
Да всё, я тебя понял.

Alice
13.05.2018
14:50:40
Видимо, что спать по 4 часа в двое суток — вредно.

Friedrich
13.05.2018
14:51:27
Ты хочешь взаимно рекурсивные определения, чтоб в A можно было использовать B, а в B можно было использовать A.
Но это работает с типами, смотри:
type A = { b : B };
type B = { a: A };
Типы выполняются строго, интерфейсы — лениво.
Кароч, это только Y в типах вида type X = Y выполняется строго. В других формах определений (например, интерфейсообразный type X = { y: Y }) он выполняется «лениво». Теперь я тебя окончательно понял и мне кажется, что изначальный тезис не совсем верный (хотя проблема действительно существует).

Alice
13.05.2018
15:05:20

AlexAnder
13.05.2018
15:18:47
type A = B | C;
что за или?
это вообще норма?

Google

AlexAnder
13.05.2018
15:19:33
как это в нормальном языке повторить?

Artur
13.05.2018
15:21:02
"или" - мощная тема тс

Дмитрий
13.05.2018
15:21:38
Нормальный ™️язык

Vladimir
13.05.2018
15:23:43

Morsik
13.05.2018
15:25:44
Джава наверно

Admin
ERROR: S client not available

Sergey
13.05.2018
15:31:00
Никак
Ну теоретически и не совсем прям именно так, но через каст к базовому классу, если такой есть. И если я правильно идею понял)
Я не говорю что это хорошо и правильно и удобно, для протокола

Friedrich
13.05.2018
15:40:58
В нормальном языке, как мне посаны пояснили, это sum type или discriminated union. А в TS у нас это, типа, unsdiscriminated union — потому что тегов нету, и одинаковые элементы типов могут коллапсировать (undefined | undefined ≡ undefined).
Ну то есть прямой аналогии в «нормальных» языках, кажется, нету?
А где есть?
Кажись, в dotty обещали добавить (ну или там подобный синтаксис будет)?

andretshurotshka?❄️кде
13.05.2018
16:23:05

Sergey
13.05.2018
17:15:26

Антон
13.05.2018
18:07:19

Morsik
13.05.2018
18:07:55
T и булеан несовместимы

Alice
13.05.2018
18:08:02
А что если ты в качестве наме передашь резулт? А там не т.

Morsik
13.05.2018
18:08:55
сделай type IApiResponse<T> = T & {result: boolean}

Google

Антон
13.05.2018
18:08:58
в конечном итоге я хочу интерфейс, где есть резалт и нужный мне тип ответа

Alice
13.05.2018
18:09:37
И поле только одно?

Morsik
13.05.2018
18:10:10

Антон
13.05.2018
18:10:11

Alice
13.05.2018
18:11:07

Morsik
13.05.2018
18:11:07
интерфейс на твою апишку или существующую?

Антон
13.05.2018
18:11:20
на мою

Alice
13.05.2018
18:11:55
на мою
Тогда тебе посоветуют, например, сделать имя поля константным.
Ну и это самую малость может немножко мономорфизм повысить.
Ну ты и тупой.
А, не, ты хуй.
@mkusher

Сашка
14.05.2018
08:20:56
Всем привет! Кто-нибудь знает, почему у HTMLElement.offsetParent тип Element, а не HTMLElement?

Artur
14.05.2018
08:22:03

Сашка
14.05.2018
08:22:37