Avetis
01.11.2017
12:51:47
http://take.ms/R6gER
может кто то подсказать почему так происходит?
Andrew
01.11.2017
12:54:21
у тебя ошибка не с функцией-параметром, а с someFanc
сделай console.log(this) перед этим вызовом, посмотри что там
Google
Sergey
01.11.2017
12:54:50
контекст проебался
Viktor
01.11.2017
12:55:27
объяви функцию как private FUNCTIONNAME = () => {}
Andrew
01.11.2017
12:55:44
p.s. к текущей ошибке не относится, но скоро ты на это напорешься: при вызове argFunc1 у тебя не будет this
возможно ты preload тоже куда-то передал таким же образом?
т.е. вместо this.someFanc(this.argFunc1) нужно писать this.someFanc(() => this.argFunc1()), чтобы захватить this
Avetis
01.11.2017
12:57:01
да preload тоже пердал черех this
всем спасибо, в preload this уже не тот класс а другой, другими словами скоуп не тот
Maxim
01.11.2017
13:14:06
давайте похоливарим об изоморфном апи
если вам надо сделать логгер (на клиенте в консоль, на сервере в файл) или rest сервис (на сервере реализация к базе, на фронте - к рест апи)
чего и как вы бы организовали ?
варианты: 1. интерфейсы/абстрактные классы в отдельном пакете - ипортируем реализуем
2. создаём два пакета, и на фронте подменяем веб паком импорт
3. Иньекция зависимостей в какой-нибудь синглтон при инициализации приложения
Google
Viktor
01.11.2017
13:17:05
в зависимости от энвайромента можно же писать куда угодно
Andrew
01.11.2017
13:17:16
второй вариант пахнет манки-патчингом
Дмитрий
01.11.2017
13:17:42
второй вариант плох тем, что зависимость от инструмента добавляет
Andrew
01.11.2017
13:17:49
третий вариант - расширенная версия первого, там все равно будут нужны интерфейсы
Дмитрий
01.11.2017
13:18:02
вообще DI для такого норм
Maxim
01.11.2017
13:18:19
Дмитрий
01.11.2017
13:18:28
если абстрагироваться от того, что сама по себе мысль делать изоморфный логгер - так себе
Maxim
01.11.2017
13:19:05
иногда надо, ну пофиг, апи например. await getuserById пусть будет
Andrew
01.11.2017
13:19:23
я бы тоже сделал через DI - код логики использует интерфейс, а в инициализаторе выбираем реализацию
Maxim
01.11.2017
13:19:45
Andrew
01.11.2017
13:21:47
не понял - инициализация контейнера DI всегда будет перед запуском какого-либо пользовательского компонента
Дмитрий
01.11.2017
13:40:45
Но чтобы сделать браузерную версию пакета достаточно указать поле browser в package.json
И там есть даже какой-то расширенный синтаксис аж в виде объекта, но в принципе достаточно и этого. Это типа общепринятая конвенция между сборщиками
dima
02.11.2017
09:02:26
Привет. Не могу тайпинг подрубить. Вроде все правильно. Хелпаните
"typeRoots": [
"node_modules/@types",
"node_modules/@develephant/types-phaser"
]
все есть. Но при импорте phaser ошибка. Типа нету тайпингов
Aleh
02.11.2017
09:10:39
Это ж не место, где лежат типы для пакетов, а конкретный пакет
Google
dima
02.11.2017
09:11:00
Aleh
02.11.2017
09:11:14
Что именно там есть?
dima
02.11.2017
09:11:48
phaser. Но тайпинги есть уже в либе. Но не работает
Vlad
02.11.2017
09:12:13
Как импортишь? dima
dima
02.11.2017
09:12:30
import * as name from "phaser"
Aleh
02.11.2017
09:13:10
А с каких пор тайпинги в json o.o
Vlad
02.11.2017
09:13:15
+1
2) разве недостаточно просто types? зачем typeRoot трогаешь
3) а если заимпортить через import X from “phaser”?
dima
02.11.2017
09:13:53
Vlad
02.11.2017
09:14:20
лол
andretshurotshka?❄️кде
02.11.2017
09:14:22
лол
Vlad
02.11.2017
09:14:26
dima
02.11.2017
09:14:29
ты орнул ?
там инфа храниться. Это уже от либы
кароче. Всем пасиб
Igor
02.11.2017
19:54:23
Здрастуйте, не подскажите к какой либе присмотреться для написания несложной игры (для универа). Желательно что нибудь более - менее простое. Буду благодарен, если ткнете в какой то бутстрап. Мне советовали Pixie.js, если к нему есть какие то маст хев библиотеки, то тоже нужно.
Google
Mike
02.11.2017
20:01:00
кинул инвайт на html5gamedev в личку
Andrey
02.11.2017
20:35:53
Кто нибудь встречался с проблемой, что TS на большом проекте начинает жрать CPU на 100% и не показывает ошибки и по внешним признакам зависает?
Ivan
02.11.2017
20:36:48
компилятор или что?
или редактор
или тайпскрипт сервис
Andrey
02.11.2017
20:37:21
тайпскрипт сервис, пока включен просто для проверки JS
иногда выплевывает сотни ошибок и тоже умирает
Ivan
02.11.2017
21:45:27
а, это и у меня было
Andrey
03.11.2017
04:26:37
Friedrich
03.11.2017
06:41:48
А вы видели? Бивариантные параметры функций теперь в --strict отменили!
В смысле, там теперь есть новая опция --strictFunctionTypes, и она включена в --strict.
И с ней параметры теперь не бивариантные. Круто же.
Mike
03.11.2017
06:46:18
Ага
Но смотри, для методов так и остались бивариантны
Friedrich
03.11.2017
06:46:50
Хм. Блин, недоделали.
Mike
03.11.2017
06:47:02
Нет. Так задумано
Иначе все к херам сломается
Friedrich
03.11.2017
06:47:24
Из-за совместимости, да? Ну ладно, пускай тогда пока живёт.
Mike
03.11.2017
06:47:35
Нет не совместимость
Friedrich
03.11.2017
06:47:42
А что сломается?
Google
Friedrich
03.11.2017
06:47:48
Интересно было бы посмотреть.
Mike
03.11.2017
06:47:55
Ща
вот тут написано что сломается https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-function-parameters-bivariant
Friedrich
03.11.2017
06:50:17
Ага, понял. Совместимость типов рассматривает совместимость параметров в методах, так?
Mike
03.11.2017
06:50:51
да, иначе никак
Friedrich
03.11.2017
06:52:01
Ну, тут как посмотреть, на самом деле.
Пример, который там приведён (совместимость массивов) на самом деле не должен работать.
«На самом деле» совместимы только readonly-массивы.
Mike
03.11.2017
06:52:44
и это сломает мозг огромному количеству людей
Friedrich
03.11.2017
06:53:04
И вот readonly-массивы были бы совместимы и при отклчюенной бивариантности.
Mike
03.11.2017
06:53:48
на самом деле это и так неплохой шаг вперёд
потому что бивариантность часто мешает в коллбеках
Aleh
03.11.2017
06:54:00
Friedrich
03.11.2017
06:54:00
Возможно, в будущем можно будет как-то более аккуратно это решить — например, как-то аннотировать или вычислять по телу метода, что он использует массив только для чтения.
Mike
03.11.2017
06:54:22
Aleh
03.11.2017
06:54:53