@typescript_ru

Страница 339 из 669
Mike
02.09.2017
07:49:10
И как делаешь? Через аннотации?
Нет, я полностью отказался от декораторов и рефлекта. Просто генерю на каждый интерфейс объект своего класса и потом мапу всех классов на реализованные мнтерфейсы. И трансформацией кода все instanceof заменяются на вызов кастомной функции которая сначала мнстансофом чекает а потом по таблице

Mike
02.09.2017
08:04:22
Я еще не доделал это до конца, но в целом в рантайме все проще и кода меньше и тп

Google
Mike
02.09.2017
08:05:09
Как минимум когда ты декарируешь класс его оборачивают в вызов промежуточной функции декоратора. У меня же нет

На обычный рантайм вообще никакого влияния, просто табличка сбоку лежит

Ну и просто по дефолту тайпа не умеет эмитить рефлект на все объекты и в принципе интерфейсы в рантайме не представлены, потому рефлект мне не сильно помощник

Дмитрий
02.09.2017
14:11:48
Мндаа

Кастомный instanceof уже сто лет в спеке жс

У меня даже либа есть у которой instanceof матчит по форме любой объект

Плюс концепция интерфейсов в языке

Andrew
02.09.2017
14:14:14
По-моему это не совсем то что надо

Дмитрий
02.09.2017
14:14:57
Объект имплементит интерфейс если имеет поле с соответствующим символом

Andrew
02.09.2017
14:15:11
Во-первых, количество проверок зависит от шейпа. Во-вторых, бывают маркерные интерфейсы без полей вообще и по шейпу не определишь

Дмитрий
02.09.2017
14:15:27
В том числе и кастомный интерфейс кастомные символы

Andrew
02.09.2017
14:15:46
Вот символы уже ближе к теме

Google
Дмитрий
02.09.2017
14:16:21
Вот символы уже ближе к теме
А ты не поверишь на чем instanceof реализуется

Я просто не оч понимаю зачем лезть поперёк концепций языка. Потом огребешь же, как минимум просевшим до плинтуса перфомансом

andretshurotshka?❄️кде
02.09.2017
14:18:05
По-моему это не совсем то что надо
> все instanceof заменяются на вызов кастомной функции

Это то что нужно

зачем заменять

Andrew
02.09.2017
14:19:17
Я говорил про то, что определять реализацию интерфейса по шейпу объекта непрактично

Andrew
02.09.2017
14:21:42
Мы сейчас говорим про абстрактное определение интерфейса в вакууме или в контексте задачи, которую решает Михаил?

andretshurotshka?❄️кде
02.09.2017
14:22:50
Ну я говорю только про то что не надо заменять instanceof на кастомную функцию чтобы переопределить его поведение

Andrew
02.09.2017
14:31:37
Mike
02.09.2017
18:29:52
Я просто не оч понимаю зачем лезть поперёк концепций языка. Потом огребешь же, как минимум просевшим до плинтуса перфомансом
я лезу поперёк концепций языка потому что хочу сконвертировать 20 мегабайт кода написанного на другом но похожем языке где такая концепция есть

так я согласен что в здравом уме на тайпскрипте так писать не нужно и даже нельзя

Andrew
02.09.2017
18:32:38
в моём случае как раз такого много и это нужно поддержать
Ну с помощью символов это вполне реально и даже красиво получается

Mike
02.09.2017
18:32:47
а ie11 взлетит?

и кстати, что-то беглый гуглёж не показал как переопределить поведение instanceof, кинь в меня ссылкой плз

Andrew
02.09.2017
18:35:33
Symbol.hasInstance гугли

Я тоже сегодня попарился, пока это нашел

Denis
02.09.2017
18:36:13
Давно просто про символы надо было почитать)

Google
Denis
02.09.2017
18:36:28
И не было бы сюрпризом

Andrew
02.09.2017
18:36:33
Насчет ie11 не знаю, наверняка есть shim, но остается вопрос производительности

Mike
02.09.2017
18:36:54
да про чимволы читал, только они в ie не работают и я их не юзаю

я проще на метод поменяю

там всё просто, сначала инстансов если прокатило то всё, оно, если нет, то два хеш лукапа

в принципе ничего критичного

да и не юзается это где-то в нагруженном коде, обычно это в простой бизнес-логике лежит

мой конвертер и так сейчас вот это http://service.crazypanda.ru/v/clip2net/7/E/gNCf1GySkm.png вот в это конвертит http://service.crazypanda.ru/v/clip2net/W/n/gUlPYzoE7I.png

вот в это http://service.crazypanda.ru/v/clip2net/W/n/gUlPYzoE7I.png

так что вопрос с инстансофом не такой уж и ужасный

Denis
02.09.2017
18:41:00
Ох е

andretshurotshka?❄️кде
02.09.2017
20:48:50
жесть

Mike
02.09.2017
20:52:02
ну а другого способа добавить целочисленную 32х битную математику нет

вебассембли не предлагать

Сергей
02.09.2017
20:56:04
Mike
02.09.2017
20:58:06
это добавление целочисленной арифметики в тайпскрипт

с переполнениями как в 32 бита и тп

andretshurotshka?❄️кде
02.09.2017
21:00:49
Mike
02.09.2017
21:04:50
почему нет
потому что язык с GC

который мне нужен

Google
Vladimir
02.09.2017
21:11:46
но арифметику то можно и на вебассембли сделать

Mike
02.09.2017
21:13:12
так у меня просто тип инт есть, на объектах такие поля и тп

мне в язык надо глобально поддерку интов, это кстати несложно было уже всё работает давно с интами

и параметры функций и ретурны и присвоения

Vladimir
02.09.2017
21:14:15
в местах где тебе нужен блок арифетики, компилируешь его в вебассембли

Mike
02.09.2017
21:14:32
не, треш

Vladimir
02.09.2017
21:14:39
Не, это самый сок

это почти компилятор

Mike
02.09.2017
21:15:07
представь 10 метров кода игры и ещё 10 всяких либ, и 40% фнкций используют инты

часть вообще графику обрабатывает

короче не, так проще гораздо

Vladimir
02.09.2017
21:15:37
тогда прирость скорость от вебассембли прямо будет

или хотя бы asm.js

а то мне кажется что то что утебя на выходе так себе на производительности сказывается

Mike
02.09.2017
21:18:54
не сильно фатально

будем профайлить, где надо, убирать инты и заменять на намберы, тогда такого говна не будлет

Max
02.09.2017
21:23:54
тогда прирость скорость от вебассембли прямо будет
Вообще-то в последнем хроме уже есть автоматическая компиляция asm.js в вебассембли так что производительность будет одинаковая (http://benediktmeurer.de/2016/12/20/v8-behind-the-scenes-december-edition/)

Vladimir
02.09.2017
21:24:16
ну для этого нжуно asm.js выдавать

Ҫѐҏӗѫӑ
03.09.2017
05:19:56
лол

dima
03.09.2017
14:35:53
кто поможет написать тайпинг ?

Google
dima
03.09.2017
14:35:54
https://www.npmjs.com/package/bookshelf-eloquent

это фишке. Блин это просто бомба

orm knex + bookshelfjs расширеная тем плагином

и в итоге orm как в laravel

т.е связи те же

interface IModelBase { static demo(): any }

статик не на писать ?

Капец. Ору. Как мне добавить тацпинги существующему проекту ?

вот на пример bookshelf есть тайпинг. А вот тайп же не видит плагин. Че делать ?

andretshurotshka?❄️кде
03.09.2017
15:32:49
как обычно

dima
03.09.2017
15:32:58
andretshurotshka?❄️кде
03.09.2017
15:33:31
@types или файлы .d.ts

dima
03.09.2017
15:33:48
ну а в нутри что ? Мне нужен именно абстактный класс

который не дополнить и не переопределить. Мне нужно внедрить статические свойства. Через интерфейс не выйдет. Через абстрактый тоже. Он говорит что класс уже есть

andretshurotshka?❄️кде
03.09.2017
15:35:29
через интерфейс норм должно быть

dima
03.09.2017
15:36:22


но мне нужны статические свойства

andretshurotshka?❄️кде
03.09.2017
15:37:37
https://www.typescriptlang.org/docs/handbook/declaration-merging.html

dima
03.09.2017
15:37:46
хотя плагин пашет и если не статически вызвать метод

Ostap
03.09.2017
21:32:02
но мне нужны статические свойства
Мне вот тоже. Я так т не понял как правильно их описать

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