@typescript_ru

Страница 12 из 669
Vasiliy
21.06.2016
19:45:46
пытаюсь поставить тайпинги для lodash (там должен быть определен “lodash/fp” модуль из вот этого PR)

вот так typings install dt~lodash --global --save

все ок – поставились

захожу в typings/global/lodash/index.d.ts, а там нет https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/lodash/lodash.d.ts#L20980 вот этой строчки

Google
Vasiliy
21.06.2016
19:48:39
у меня вообще старая версия похоже "lodash": "registry:dt/lodash#3.10.0+20160619033623”, (хотя, по дате не скажешь)

но как поставить новее? из мастера, например? с npm пробовал тоже ставить, но там нет lodash/fp

о, в гиттере написал, завели ишью

Gordey
21.06.2016
20:23:28
все не зря)

Aleh
22.06.2016
10:05:08
а теперь перейдем к новостям из тайпскриптового gh: https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&q=is%3Aopen%20is%3Aissue%20milestone%3A%22TypeScript%202.0%22%20

27 issue отделяют нас от светлого будущего

Ҫѐҏӗѫӑ
22.06.2016
11:43:46
на самом деле меньше

там часть уже пофикшена

Aleh
22.06.2016
16:14:56
так, простой вопрос, но я чето туплю. Нужно описать тип класса, в том числе и абстрактного. Для неабстрактного some<T>(ClassName: new (...args: any[]) => T)

ну т.е. для неабстрактного описываем функцию конструктор

так, typeof не работает с тип из generic'a

Artur
22.06.2016
16:26:03
А подробнее можно?

Vasiliy
22.06.2016
16:26:16
эмм, я пока не очень шарю

Google
Vasiliy
22.06.2016
16:26:27
class Foo {} const foo = some<Foo>(Foo);

ты этого хочешь?)

Aleh
22.06.2016
16:27:04
даа

только в случае abstract class Foo

Vasiliy
22.06.2016
16:28:54
а можешь тут написать?) https://www.typescriptlang.org/play/

Andrew
22.06.2016
16:29:07
Добрый вечер! Товарищи, кто подскажет, есть ли в Телеграме группа по webpack?

Vasiliy
22.06.2016
16:29:40
https://www.typescriptlang.org/play/#src=function%20some%3CT%3E(ClassName%3A%20new%20(...args%3A%20any%5B%5D)%20%3D%3E%20T)%20%7B%0D%0A%09return%20ClassName%3B%0D%0A%7D%0D%0A%0D%0Aabstract%20class%20Foo%20%7B%0D%0A%09woofWoof()%20%7B%0D%0A%09%09console.log('woof!')%3B%0D%0A%09%7D%0D%0A%7D%0D%0Aclass%20Bar%20extends%20Foo%20%7B%0D%0A%7D%0D%0A%0D%0Aconst%20foo%20%3D%20some%3CFoo%3E(Bar)%3B

Aleh
22.06.2016
16:30:48
http://www.typescriptlang.org/play/index.html#src=function%20some%3CT%3E(ClassName%3A%20new(...args%3Aany%5B%5D)%20%3D%3E%20T)%3A%20T%20%7B%0D%0A%09%2F%2F%20here%20goes%20magic%0D%0A%09let%20someObjectOfTypeT%3A%20T%3B%0D%0A%09return%20someObjectOfTypeT%3B%0D%0A%7D%0D%0A%0D%0Aabstract%20class%20Foo%20%7B%7D%0D%0Aclass%20Bar%20%7B%7D%0D%0A%0D%0Asome(Bar)%3B%20%2F%2F%20ok%0D%0Asome(Foo)%3B%20%2F%2F%20Not%20ok

Vasiliy
22.06.2016
16:30:59
Добрый вечер! Товарищи, кто подскажет, есть ли в Телеграме группа по webpack?
99% что нет, я думаю уместно будет задавать вопросы по webpack в https://telegram.me/react_js

Artur
22.06.2016
16:31:00
Я недавно решал проблему с другим интересным моментом. Правда до конца не решил.

Vasiliy
22.06.2016
16:31:33
да, так я и не понял вопроса ведь) просто пытался догадаться

Artur
22.06.2016
16:31:43
Ща покажу, что решал

Aleh
22.06.2016
16:32:02
да, так я и не понял вопроса ведь) просто пытался догадаться
мне надо абстрактный класс передать как аргумент

собственно в play видно

Ivan
22.06.2016
16:33:10
Несколько дней назад в гитере я высказался в нафиг тайпскрипт (ни разу его не видя) и вот до чего опустился сегодня утром https://github.com/redux-observable/redux-observable/pull/50/files

Vasiliy
22.06.2016
16:33:42
о, а я его использую)

Ivan
22.06.2016
16:34:02
я все мидлвары им заменил

и теперь у меня мидлвары мидлвар ?

Vasiliy
22.06.2016
16:34:47
мне надо абстрактный класс передать как аргумент
а так же нельзя – нельзя создать экземплять абстрактного класса

Google
Ivan
22.06.2016
16:35:07
а передать можно

Vasiliy
22.06.2016
16:35:52
надо убрать констраинт на конструктор тогда

насколько я понял

Aleh
22.06.2016
16:36:14
Так как описать тип?)

Какой тип у абстрактного класса

Ivan
22.06.2016
16:37:23
ты что конкретно хочешь сделать

задача какая

что тебе мешает как параметр template прокинуть

Aleh
22.06.2016
16:39:04
http://www.typescriptlang.org/play/index.html#src=function%20some%3CT%3E(ClassName%3A%20new(...args%3Aany%5B%5D)%20%3D%3E%20T)%3A%20T%20%7B%0D%0A%09%2F%2F%20here%20goes%20magic%0D%0A%09let%20someObjectOfTypeT%3A%20T%3B%0D%0A%09return%20someObjectOfTypeT%3B%0D%0A%7D%0D%0A%0D%0Aabstract%20class%20Foo%20%7B%7D%0D%0Aclass%20Bar%20%7B%7D%0D%0A%0D%0Asome(Bar)%3B%20%2F%2F%20ok%0D%0Asome(Foo)%3B%20%2F%2F%20Not%20ok

Я понимаю почему ошибка, я не понимаю как это записать иначе

typeof и implementationof не работают

Ivan
22.06.2016
16:41:24
дак и будет ошибка - абстрактный класс нельзя создать

Aleh
22.06.2016
16:41:33
Я понимаю почему ошибка, я не понимаю как это записать иначе

Vasiliy
22.06.2016
16:41:59
убрать тип просто, наверное)

Aleh
22.06.2016
16:42:29
Ну блин)

Тогда generic явно писать придётся везде

Так, ты не зашарил свои изменения

Ivan
22.06.2016
16:45:11
Я не вкуриваю разницы что ты напишешь some(Foo) что some<Foo>

Aleh
22.06.2016
16:45:12
Но я так понимаю any для первого аргумента)

Google
Artur
22.06.2016
16:45:15
https://www.typescriptlang.org/play/#src=%0D%0A%2F%2F%20vendor%20function%0D%0Afunction%20model%3CTDoc%3E(schema%3Aany)%3AModel%3Cany%3E%20%26%20TDoc%20%7B%0D%0A%09return%20%3Cany%3Eschema%3B%20%2F%2F%20%0D%0A%7D%0D%0A%0D%0A%2F%2F%20example%20of%20vendor%20document%20interface%0D%0Ainterface%20Doc%20%7B%7D%0D%0A%0D%0A%0D%0A%2F%2F%20example%20of%20vendor%20model%20interface%0D%0Ainterface%20Model%3CT%3E%20%7B%0D%0A%09new(document%3AT)%3AT%3B%0D%0A%09find(q%3Aany)%3ADoc%3B%0D%0A%7D%0D%0A%0D%0A%2F%2F%20implements%20document%20and%20model%20functions%0D%0Aclass%20Bar%20%7B%0D%0A%09static%20findByEmail(email%3Astring)%20%7B%0D%0A%09%09return%20(%3Cany%3E%20this).findOne(%7Bemail%7D)%3B%0D%0A%09%7D%0D%0A%7D%0D%0A%0D%0Afunction%20getModel%3CTDoc%3E(collection%3ATDoc)%3ATDoc%20%26%20Model%3Cany%3E%20%7B%0D%0A%09return%20%3CTDoc%20%26%20Model%3Cany%3E%3E%20model(%7B%7D)%3B%0D%0A%7D%0D%0A%0D%0Alet%20barModel%20%3D%20getModel(Bar)%3B%0D%0AbarModel.findByEmail('vasya%40pupkin.ru')%3B%0D%0A

Короче, вот пример

Vasiliy
22.06.2016
16:45:31
а, блин, там надо кнопку жать)

Artur
22.06.2016
16:45:33
По-моему это примерно о том

Ivan
22.06.2016
16:45:35
во втором случае гемора нет и там и там ты имя класса пишешь явно

Artur
22.06.2016
16:45:50
Есть интерфейсы от которых нельзя заимплементиться.

И надо указать, что этот интерфейс будет внедряемым в класс.

Короче одна проблема осталась, которая решится во второй версии - это указание типа this.

Aleh
22.06.2016
16:47:15
во втором случае гемора нет и там и там ты имя класса пишешь явно
Без примера непонятно о чем разговор, сорри

По-моему это примерно о том
Вроде не совсем, у тебя тут вроде обратная ситуация

Но я с телефона ещё плохо раскурил(

Artur
22.06.2016
16:57:58
Да я тоже не очень пока понял, о чем речь.

some(Foo); // Not ok вот это решается если убрать abstract из Foo

Vasiliy
22.06.2016
16:59:22
http://www.typescriptlang.org/play/index.html#src=function%20create%3CT%3E(c%3A%20%7Bnew()%3A%20T%3B%7D%20%7C%20any)%3A%20T%20%7B%0D%0A%20%20%20%20return%20new%20c()%3B%0D%0A%7D%0D%0A%0D%0Aabstract%20class%20Foo%20%7B%0D%0A%09foo()%20%7B%20console.log('foo')%3B%20%7D%0D%0A%7D%0D%0Aclass%20Bar%20%7B%0D%0A%09bar()%20%7B%20console.log('bar')%3B%20%7D%0D%0A%7D%0D%0A%0D%0Aconst%20bar%20%3D%20create%3CBar%3E(Bar)%3B%20%2F%2F%20ok%0D%0Aconst%20foo%20%3D%20create%3CFoo%3E(Foo)%3B%20%2F%2F%20Not%20ok%0D%0A%0D%0Afoo.foo()%3B%0D%0Abar.bar()%3B

но это прикол, сорри)

Aleh
22.06.2016
17:00:06
Artur
22.06.2016
17:00:34
Так ведь это противоречит абстрактной концепции классов.

Или здесь имеется в виду, что мы не знаем, что за класс, но он происходит от этого вот абстрактного?

Aleh
22.06.2016
17:01:30
Нет, он абстрактный, но мне надо просто с ним работать, я не буду new делать на нем

Artur
22.06.2016
17:01:32
Или мы какое-то динамическое наследование используем?

Google
Artur
22.06.2016
17:02:14
Ага, значит динамическое наследование?

Aleh
22.06.2016
17:02:25
Не

Я складываю их в мапу

Artur
22.06.2016
17:02:49
А что, ты же передаешь Foo в качестве аргумента, который должен возвращать new Foo.

Aleh
22.06.2016
17:03:24
Вот я в общем-то не хочу, чтобы он был типа конструктор, но как иначе описать класс я не знаю

Artur
22.06.2016
17:03:29
Кстати, для func<T?arg:T)... не обязательно передавать тип в функции, если он определен в аргументе.

T extends Foo

Например

Но это если у тебя результат будет наследовать его.

Aleh
22.06.2016
17:04:58
У меня нет какого-то базового класса

Artur
22.06.2016
17:05:24
Ок, хорошо. А что ты делаешь с ними внутри тогда? Зачем в мапу складывать абстрактные классы?

Aleh
22.06.2016
17:05:50
Каждому классу в соответствие значение

Потом по ним достаю значения

Такой простой контейнер

Ключи - классы, значения - объекты классов или их наследников

Раньше не было абстрактных

Вот сейчас хотел добавить(

Artur
22.06.2016
18:00:00
Так они в этом случае не нужны. Предназначение абстрактных классов в том, чтобы их нельзя было инициировать, чтобы они могли реализовать внутри общий для потомков функционал и некоторые интерфейсы, которые обязаны определить дочерние классы.

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