
Дмитрий
14.04.2018
04:50:12
:) :) :)

Vlad
14.04.2018
04:50:41
Чувак, давай я буду краток. Иди нахер.
Мне очень не нравится, как ты ведёшь беседу.
И продолжать ее я не собираюсь.

Google

Дмитрий
14.04.2018
04:52:26
Держите нас в курсе
Я понимаю, что обидно, сделал клевую штуку а тут пришел чел, всё обосрал и разве что пидором не назвал; но я серьезно считаю что если не пояснять что так делать в реальных проектах нужно как можно меньше, то люди начинают массово брать дурной пример, а в конечном итоге еще и требовать от авторов языка еще более вздорных конструкций
А потом frontend fatigue потому что тысяча инструментов и все делают какую-то дичь

Vlad
14.04.2018
05:40:14
Это не означает, что кому-то что-то обидно :). Только то, что на тебя не хотят тратить время. Это совсем не трудное решение, и ты сильно переоцениваешь заинтересованность людей в том, что ты там считаешь. Я лично прекрасно без этого знания жил, и как-нибудь дальше справлюсь.

Дмитрий
14.04.2018
05:42:04
"я не обиделся :) :) :) :)"

andretshurotshka?❄️кде
14.04.2018
06:40:46
:) :) :) это че за брейнфак

Vlad
14.04.2018
07:14:23
Да так, истерика по поводу mapped types. Бывает регулярно начиная с версии 2.2.

Андрей
14.04.2018
07:20:58
Объясните непосвященному зачем это?)

Vlad
14.04.2018
07:27:00
Mapped types? Помогают иногда :) Просто для примера - помните вызов model.get( “attr” ) из Backbone? Вот, часть фич вокруг этих mapped types позволяет такие методы строго затипизировать, так, что компилятор не пропустит неправильный «attr», а get вернёт правильный тип.
Но когда люди смотрят на сигнатуру такого метода, с теми кто послабже духом случается истерика. Ну, она в самом деле выглядит, гхм, немного необычно, тут надо взять себя в руки.
https://github.com/Volicon/NestedLink/blob/master/src/link.ts
См. для примера метод at и тип LinksCache.
Таким образом целесообразно типизировать в основном внешний API библиотек. Там чем точнее, тем лучше. В гражданском коде сами подобные ситуации, где эти навороты подходят к месту, возникают довольно редко.

Google

Bogdan
14.04.2018
07:55:27
Еще раз - смыл в количестве тайпингов для либ
Я немного в нем разочаровался.
WebStorm нормально детектил типизацию в JS
И видел методы заданные через прототип функции конструктру.
В тс же, если нет тайпингов, приходится any юзать, и веб шторм никак не хочет инферить типы для js либки
Еще бесит что в тайпингах нету jsdoc, голые сигнатуры
А в оригинальных либах чаааасто есть дока
Интересно, почему https://github.com/Microsoft/dts-gen эта штука в npm не публикует типы, голый js (
По сути только как либу юзать можно..

Korolll
14.04.2018
12:21:27
Ребят есть обобщённый тип который принимает значение true или false, могу я этот тип перегнать в значение?

Andrey
14.04.2018
12:23:17

Korolll
14.04.2018
12:24:38
Это грустно, но спасибо

Bogdan
14.04.2018
12:57:11
? ? bool не подходит?

Дмитрий
14.04.2018
14:01:49
Слишком просто

Vlad
14.04.2018
14:45:32

Korolll
14.04.2018
14:53:57
Есть класс он принимает на вход обобщённый тип, скажем (T) который наследуется от boolean, так что фактически значение записанное в T либо true либо false. Но как обычное значение я T использовать не могу, вот я и подумал возможно можно, вытянуть тип и преобразовать в значение. (Под значением я подрузомиваю обычную js булеву переменную)

Vlad
14.04.2018
15:04:21
TS при транспиляции полностью вырезает все типы, и их нельзя преобразовать в значение. Типы - отдельно, значения - отдельно. То есть, вообще, а не только в данном случае. С другой стороны, есть, конечно, reflect-metadata.
Reflect.getMetadata("design:type", target, propertyKey);
Но я очень сомневаюсь, что она способна вытащить подтип boolean - там обычно конструктор возвращается.

anatolii
14.04.2018
15:15:46

Korolll
14.04.2018
15:17:38
T extends boolean

anatolii
14.04.2018
15:20:05
Это ж синоним просто бул, зачем обобщенный тип?

Korolll
14.04.2018
15:25:02
Не понял вас, я задал эту типовую переменную в классе, то есть так можно A<true>, а так нет A<1>

Adam
14.04.2018
15:27:06
нахрена наследоваться от булеан? у него что, есть какие-то уникальные методы (свойства)? Вот поэтому и не жалко, что телегу заблокируют: профессиональные паблики всё равно бесполезны

Korolll
14.04.2018
15:27:55
Лол
Есть

Artur
14.04.2018
15:28:06
Korolll всё, из-за тебя не жалко что телегу заблокируют

Google

Vlad
14.04.2018
15:28:27

Adam
14.04.2018
15:28:42
это ограничение типа в дженерике
и что дальше?
Тебе не нужен здесь дженерик

Korolll
14.04.2018
15:29:18
Да

Vlad
14.04.2018
15:29:39
и что дальше?
Все. Это был ответ на вопрос "нахрена наследоваться от boolean". :)

Korolll
14.04.2018
15:33:01
Если тут реально никто не видит фактических приложений, то могу пояснить, как это используется у меня если это интересно только школьнику, то не буду

Тимофей
14.04.2018
15:33:36

Vlad
14.04.2018
15:34:23
> то могу пояснить, как это используется у меня
+1

Adam
14.04.2018
15:35:01
Ограничения типа в дженерике обычно пишут, чтобы производные от указанного классы могли подставляться, удовлетворяя указанному интерфейсу. Например, можно подставить любой промис, имеющий then и catch. Но boolean - не тот случай

Artur
14.04.2018
15:35:36

Vlad
14.04.2018
15:36:48
> Но boolean - не тот случай
Руководство по языку говорит, что number, string, и boolean - это тот случай. Как и зачем это использует автор - виднее автору.

Artur
14.04.2018
15:38:10

Adam
14.04.2018
15:38:22

Artur
14.04.2018
15:38:38
именно
Но его не используют как T extends PromiseLike

Korolll
14.04.2018
15:38:41
Пишу обобщенный интерфейс для формы есть булев тип в классе поля есть тип поля T и тип Multiple, как раз он boolean. А вот тип значения поля (Multiple extends false ? T : T[])

Artur
14.04.2018
15:39:27
Остаётся проблема, что в конструктор формы придётся всегда явно передавать литерал, а не перемнную

Adam
14.04.2018
15:41:16
какой формы-то? Пользовательского ввода?
Так там всегда строка, зачем T?

Google

Vlad
14.04.2018
15:42:44
О, тут оказывается не только за TS беседуют, но и дизайн-ревью друг другу делают. Удобно ?

Korolll
14.04.2018
15:43:01
Файлы, чекбоксы, кастомные типы

Admin
ERROR: S client not available

Artur
14.04.2018
15:44:20
Вложенные формы, и коллекции всего этого

Korolll
14.04.2018
15:44:46
Адам, без обид но я тебя буду игнорить, ты на голову выше

Adam
14.04.2018
15:44:59
умолкаю

Vlad
14.04.2018
16:23:39
На всякий случай поясню, как работают эти extends boolean. Это неочевидно и довольно интересно. Вот такое:
class X<T extends number> {
val : T
}
Позволяет писать вот так.
let x = new X<1>();
Но 1 здесь - это не значение, как это может показаться, а _тип_ (literal type). Кто-то может спросить, как же так, что это за тип такой, у которого есть только одно значение? Ну почему же одно. Совсем не обязательно одно.
let y = new X<1 | 2 | 3>();
Та же фигня со string и boolean. Пример boolean вырожденный, и на нем трудно это заметить.
ЗЫ: Теперь самое время паниковать. "А-а-а, куда катится этот язык, индустрия опасносте!". :)

Bogdan
14.04.2018
16:35:28
почему в JS нормальные документирующие коменты , а в тайпингах их совсем нет? :(
2й скрин рпосто JS
WebStorm
аблюдаю такой для болшенстива тайпингов(

Vlad
14.04.2018
16:39:17
Вот koa.
Вот кусок его тайпинга
Это философский вопрос к авторам тайпингов. Не нравится - добавь в тайпинг комментарии и сделай PR.

andretshurotshka?❄️кде
14.04.2018
16:42:18
это точно текст не из тайпинга

Vlad
14.04.2018
16:42:20
А, пардон, это был другой inspect. Вот правильный.

Google

andretshurotshka?❄️кде
14.04.2018
16:42:39
ладно)

Bogdan
14.04.2018
17:08:18

Vlad
14.04.2018
17:33:47
Можно, отчего ж нельзя. https://github.com/brettle/jsdoc-to-typescript-declaration
Теоретически, по крайней мере. Хз работает ли этот пакет на самом деле.
Норм вроде работает. http://fivetran.github.io/typescript-closure-tools/

Dmitrii
16.04.2018
04:40:23
Всем привет. Как можно сгенерировать статичных полей класса из интерфейса ?
export class Klass { static [k keyof SomeInterface]: SomeInterface[k]; }

Aram
16.04.2018
05:48:40

Dmitrii
16.04.2018
05:52:39
например есть интерфейс
interface Keys {
a: 1;
b: 2;
}
хочу чтобы такие же статичные поля были в классе (пишу d.ts)

Artur
16.04.2018
06:01:22

Max
16.04.2018
08:09:46