@typescript_ru

Страница 602 из 669
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
Не ок, у класса состояние и приватные поля есть, интерфейс = контракт
Слава богу в тсе типы чуть лучше чем в 90ые в жаве

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 в тс классный, кто ж спорит

Да нет никакого vs.
И срача на 20 экранов не было)

Google
Alice
13.05.2018
13:30:16
Sergey
13.05.2018
13:33:26
Не было же.
Ну так я ж сразу так и сказал

Friedrich
13.05.2018
14:23:26
Я сначала тоже так делал, но потом понял, что это бессмысленно.

В итоге сейчас пишу без префиксов.

Friedrich
13.05.2018
14:43:25
Вааааааащще нет.
Ну давай, расскажи, в чём разница между type и interface :)

Alice
13.05.2018
14:44:19
Ну давай, расскажи, в чём разница между type и interface :)
Типы выполняются строго, интерфейсы — лениво.

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
type Foo = { self: Foo; } Сконпелировалось.
type A = B | C; type B = A | C; type С = 'b'; Ща менее юзлес.

Не.

Блч.

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

type A = B | C; type B = A | C; type С = 'b'; Ща менее юзлес.
↑ хоть и не понял, что ты этим сообщением хочешь донести

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 }) он выполняется «лениво». Теперь я тебя окончательно понял и мне кажется, что изначальный тезис не совсем верный (хотя проблема действительно существует).

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
Нормальный ™️язык

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 обещали добавить (ну или там подобный синтаксис будет)?

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
сделай type IApiResponse<T> = T & {result: boolean}
и потом делаешь const resp = IApiResponse<{user: User}> = {...}

Антон
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
Всем привет! Кто-нибудь знает, почему у HTMLElement.offsetParent тип Element, а не HTMLElement?
Привет. Возможно потому что HTMLElement может быть вложен например в SVGElement

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