
Yaroslav
26.02.2017
22:53:20
т.е мне нужно не у другого модуля вызвать, а у оснвного стейта

Kelin
26.02.2017
22:53:56
Хм, ну по идее должно работать
К сожалению, не с компа, так что больше ничем не помогу

Yaroslav
26.02.2017
22:59:01
А у тебя в какой версии vuex работало?

Google

Airat
27.02.2017
00:10:59
https://date-fns.org/ юзает кто?

Illya
27.02.2017
00:31:22
@codev0 я
хорошая штука, нравится мне больше чем moment

Airat
27.02.2017
00:32:12
ок, спасибо, хочу заюзать, хотел мнение узнать
дока приятная

Illya
27.02.2017
04:11:33
Добро пожаловать в ад строгой типизации на Node.JS. Присаживайтесь рядом с джавистами

Ivan
27.02.2017
04:17:36
?

★nton
27.02.2017
04:18:11
>>строгая типизация
>>ад

Airat
27.02.2017
04:18:29
что за шрифт?

Illya
27.02.2017
04:18:38
PragmataPro

Airat
27.02.2017
04:21:24
спасибо, поюзаю.

Google

Illya
27.02.2017
04:22:42
он платный :-P Пиратить плохо ;)

Airat
27.02.2017
04:23:48
€199 ппц
а я на гитхабе увидел, и подумал что халява
стоит своих денег?

Illya
27.02.2017
04:25:11
ну я им 5 лет пользуюсь и пока не нашел альтернативы

Alex
27.02.2017
04:25:15
Два раза typeof?

Illya
27.02.2017
04:25:18
да

Alex
27.02.2017
04:25:38
Чтобы наверняка ?

Illya
27.02.2017
04:25:43
угу
type ExtractType<T, RT: Type<T>> = T;
export type TypeOf<RT> = ExtractType<*, RT>;
больше ада богу ада. Javascript слишком прост для понимания :)

Alex
27.02.2017
04:39:04

Illya
27.02.2017
04:39:38
+1. Пока атмосфера норм
В конце концов количество благодарностей:
а) ни на что не влияет
б) провоцирует отвечать на простые вопросы
Как ни странно пункт б) это плохо - за простыми вопросами надо слать в гугл и доку
Чат должен быть прежде всего для вопросов которые плохо или криво отображены в доке, для "НИПАНЯТНА!" и для "давайте обсудим как бы вы это делали"

Alex
27.02.2017
04:44:19
Тут и просто по вопросам js ответ быстрее подскажут как мне кажется ?

Illya
27.02.2017
04:44:43
там же написано "прежде всего", а не "только для" :)
а так jquery one love / cc @kelin2025
А вообще задача добиться идеальной типизации проекта оказалась сложной и прикольной
я вначале думал это даже постримить, но уровень стрима получается хардкор++

Google

Illya
27.02.2017
04:59:06
потому что начинается все с переопределения типа возвращаемого значения у JSON.parse :)

Alex
27.02.2017
05:00:48
А было бы интересно посмотреть, написание типизирующего парсера
?

Illya
27.02.2017
05:01:14
не нужно. Я просто переопределяю возвращаемый тип у JSON.parse
по умолчанию там any - соответственно any является "вирусным", и все что дальше использует объект полученный через JSON.parse не может быть типизировано
я подменяю его на mixed - в итоге чтобы использовать любой объект, полученный через JSON.parse надо вначале строго доказать его тип

Ilia
27.02.2017
05:12:48

Illya
27.02.2017
05:12:57
да
ничего страшного в этом нет, это скорее защита от косяков типичных

Ilia
27.02.2017
05:17:00
ничего страшного в этом нет, это скорее защита от косяков типичных
ну в golang там все просто: косячишь - ничего не компилируется. Но типы есть изначально. А здесь получается... надо присваивать типы уже постфактум, когда переменная уже существует? не понимаю пока как это тут работает... Я правильно помню что это приложение потом посмотреть можно будет на гитхабе?

Illya
27.02.2017
05:17:24
да, можно будет
ну вот смотри

Illya
27.02.2017
05:17:56
const googleConfig: GoogleConfigType = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../config/sdk.json')).toString('utf8'));
выглядит неплохо, правда? :)
но это же чушь - в этой строке нет гарантий, что JSON.parse вернет объект, который будет совместим с GoogleConfigType
соответственно перед присваиванием надо доказать, что результат JSON.parse совместим с GoogleConfigType

Ilia
27.02.2017
05:27:36
я конечно буду выглядеть идиотом, но все же спрошу.
GoogleConfigType = выглядит как тайп ассершн
Логично тут сделать typeOf (или как это в JS делается) и если тип идентичен, то уже делаем то что нужно

Illya
27.02.2017
05:28:44
как раз в том то и дело, что поскольку в JS нету типов это нифига не type assertion
это type definition - т.е. ты говоришь что переменная googleConfig имеет тип GoogleConfigType
по умолчанию JSON.parse возвращает тип any который можно скастить к любому типу

Google

Ilia
27.02.2017
05:30:02
и как сделать чтоб кастовалось только если нужный тип?

Illya
27.02.2017
05:30:06
в итоге статический анализатор думает что в googleConfig находится валидный конфиг. Если в рантайме конфиг будет кривого формата - то выполнение программы пойдет совсем не так, как задумывалось
написать рантайм проверку
сейчас у меня так написано:
const googleConfig = validate(
JSON.parse(fs.readFileSync(path.resolve(__dirname, '../config/sdk.json')).toString('utf8')),
GoogleConfigModel,
);
в итоге благодаря чёрной магии это не только валидирует эту штуку в рантайме, но и автоматически выводит тип для статического анализатора

Admin
ERROR: S client not available

Illya
27.02.2017
05:31:19
т.е. я определяю тип один раз - для рантайма, ради чего всё и задумывалось
при этом у меня есть автокомплит на googleConfig, строгая валидация что я не обращаюсь к левым полям на этапе разработки и т.д.

Ilia
27.02.2017
05:32:16
GoogleConfigModel мы где описываем? Это c помощью flow делается?

Illya
27.02.2017
05:32:42
описываем мы руками, делается это с помощью отдельной библиотеки, у которой правильно написаны флоу биндинги
в итоге она на выходе возвращает нам модель строгого типа (с точки зрения flow) и выполняет все необходимые проверки в рантайме, чтобы flow был уверен, что мы все проверили

Ilia
27.02.2017
05:33:26
Спасибо
Остальное в коде посмотрю когда можно будет...

Illya
27.02.2017
05:33:54
угу

Ilia
27.02.2017
05:34:05
Ну впринципе не так уж и сложно

Illya
27.02.2017
05:34:17
да
но понять это, а еще объяснить людям :)
зачем ты сам себе усложняешь жизнь и почему надо валидировать все I/O-boundary

Ilia
27.02.2017
05:41:22
С ужасом представляю как буду фронту со стажем год объяснять что теперь он должен делать так.

Illya
27.02.2017
05:42:48
я тоже

Google

Alex
27.02.2017
05:44:39
Ну интересный же челлендж, вы чего ?

Airat
27.02.2017
05:45:52
подскажите, при первой загрузке виден компонент, после того как vue загрузился, точнее виден фон, и паддинг.
своего рода FOUC, какие практики есть чтобы такого не было?

Alex
27.02.2017
05:46:19
v-cloak?

Illya
27.02.2017
05:46:26
v-cloak!

Alex
27.02.2017
05:46:48
ни разу ещё им не пользовался)
наверное что-то делаю не так

Airat
27.02.2017
05:47:19
спасибо, почитаю

Stanislav
27.02.2017
05:50:11

Airat
27.02.2017
06:07:04
видать не я один такой, https://gist.github.com/adamwathan/3584d1904e4f4c36096f

Andrey
27.02.2017
07:01:05
какая то попытка сделать из ежа ужа

Kelin
27.02.2017
07:12:36
А разве, в этой ситуации не будет ошибки? Если post null
Или это особенность cloak?

Andrey
27.02.2017
07:13:45
ну это как v-if, у тебе компонент не будет рендериться, а значит и ошибки не будет

Kelin
27.02.2017
07:13:51
Просто ни разу не юзал его и вместо всегда писал v-if="!!post"
Имхо так лучше

Andrey
27.02.2017
07:15:15
Нет, v-cload это как v-show

Andrey
27.02.2017
07:16:11