
Adv0cat
13.03.2018
20:02:07

Alexander
13.03.2018
20:02:10
раньше пилил свои "костыли". сейчас пользуюсь "готовым"

Igor
13.03.2018
20:02:23

Adv0cat
13.03.2018
20:02:30
))))

Google

Adv0cat
13.03.2018
20:02:48

Alexander
13.03.2018
20:03:01
https://github.com/typestack/routing-controllers
и похожие есть

Adv0cat
13.03.2018
20:03:18
А то я нашел либу даже decorator core или как то так, но там все не удобное)

Igor
13.03.2018
20:03:31
ну опять же, Вуй без декораторов - никак просто

Сергей
13.03.2018
20:03:42
вуй не нужен прост

Adv0cat
13.03.2018
20:03:48

Igor
13.03.2018
20:04:10

Alexander
13.03.2018
20:04:31
чем?)

Igor
13.03.2018
20:05:06
приятно выглядит

andretshurotshka?❄️кде
13.03.2018
20:05:43

Alexander
13.03.2018
20:06:11

Google

Alexander
13.03.2018
20:06:30

Igor
13.03.2018
20:07:06
Да, следующие моки буду собирать на нем, проще потом ребятам в бекенд отдавать

Adv0cat
13.03.2018
20:08:38
Ну т.е. похоже ниша декораторов это архитектура приложений

Alexander
13.03.2018
20:08:46
import Ajv from 'ajv';
import Boom from 'boom';
export default function (schema) {
return function (target, key, descriptor) {
if (!schema) return descriptor;
const ajv = new Ajv();
descriptor.value = new Proxy(target[key], {
apply: async function (method, self, [ctx, next, ...args]) {
const valid = ajv.validate(schema, ctx.request.body);
if (valid) return method.call(self, ctx, next, ...args);
throw Boom.badRequest('Validation error.', ajv.errors);
},
});
return descriptor;
};
}

Adv0cat
13.03.2018
20:08:51
ну или фрейм ворки))

Alexander
13.03.2018
20:08:51
что-то похожее можно делать

Adv0cat
13.03.2018
20:09:42
Ох ты ж емое... Прокси в декораторе))))

Alexander
13.03.2018
20:09:44
ну и потом
@Validate(createSchema)
static async create(ctx, next) {}

Adv0cat
13.03.2018
20:10:55
Та да, шо-то такое, что нельзя никому показывать)))

Alexander
13.03.2018
20:11:05
сорян)

Adv0cat
13.03.2018
20:11:26
Не, ну правильно, я сам напросился)))

Alexander
13.03.2018
20:11:38
напросился - получай ;)

Adv0cat
13.03.2018
20:11:50
?
Я думал сделать декораторами множественное наследование такое...)

Le
13.03.2018
20:12:45

Alexander
13.03.2018
20:12:49

Adv0cat
13.03.2018
20:13:53

Alexander
13.03.2018
20:14:12
еще лепил "костыли" для дата мапинга. но это совсем жесткач.

Adv0cat
13.03.2018
20:17:01
оу... ну не для этого декораторы придуманы)))
Я скорее имел ввиду такие вещи как @destroy @init @update @parse какие-нибудь)) А там внутри проверка на дестройнутость например или заиниченость, т.е. банально, чтобы можно было любому классу добавить дестрой функцию или апдейт и эта функция вызывалась бы только если произошел инит

Google

Alexander
13.03.2018
20:18:07
ну лучше наследоваться от базового класса как по мне

Adv0cat
13.03.2018
20:18:36
Ну не всегда есть такая возможность)

Alexander
13.03.2018
20:18:58
кто-то запрещяет?)))

Adv0cat
13.03.2018
20:19:40
Ну банально уже наследован класс от того же AsyncEmiter какого-нибудь)
например нодовского)

Сергей
13.03.2018
20:20:05
любители наследования набежали

Le
13.03.2018
20:20:16
extends EventEmitter, Destroyable

Adv0cat
13.03.2018
20:20:18
вы щас скажете используй миксины))

Сергей
13.03.2018
20:20:34
не использовать наследование впринципе

Adv0cat
13.03.2018
20:21:03
всмысле екстендс и 2 класса? о_о а шо так можно было?

Le
13.03.2018
20:21:23

Adv0cat
13.03.2018
20:21:38
О_о
Ты мне врешь небось)

andretshurotshka?❄️кде
13.03.2018
20:21:53
композиция

Adv0cat
13.03.2018
20:22:21
Эм.. а как так я прое... пропустил этот момент?)))

Le
13.03.2018
20:22:34
Ты мне врешь небось)
https://www.typescriptlang.org/play/index.html#src=class%20A%20%7B%7D%0D%0Aclass%20B%20%7B%7D%0D%0Aclass%20C%20extends%20A%2C%20B%20%7B%7D
ох и правда вру
подчеркнуло же
значит только интерфейсы

Google

Сергей
13.03.2018
20:23:06
лол
нет
это оператор запятая
(1, 2)

Le
13.03.2018
20:23:16
interface A {}
interface B {}
interface C extends A, B {}

Alexander
13.03.2018
20:23:47
так низя
сорян. я про классы

Adv0cat
13.03.2018
20:24:46
Тю ты))) Так интерфейсы ж тебе не классы))
Фу ты емое)
Перепугал меня)

Le
13.03.2018
20:25:02
ну сорян, я думал и классы можно
интерфейсы приходилось, классы нет

Сергей
13.03.2018
20:25:19

Le
13.03.2018
20:25:36
?

Alexander
13.03.2018
20:25:38
оуу)

Le
13.03.2018
20:26:16
стопэ, а чем это отличается от extends A

Сергей
13.03.2018
20:26:25
тем что там 2 класса

Alexander
13.03.2018
20:26:26
извращения пошли перед сном)

Adv0cat
13.03.2018
20:26:47

Сергей
13.03.2018
20:27:19

Google

Adv0cat
13.03.2018
20:27:44
Аа ты просто опечатку сделал)

Le
13.03.2018
20:27:53
какая-то странная штука

Сергей
13.03.2018
20:28:02

Le
13.03.2018
20:28:41
ну да, но не очень понятно как бы это в реальном коде выглядело бы

Adv0cat
13.03.2018
20:28:49
Там ты пропустил class B

andretshurotshka?❄️кде
13.03.2018
20:28:49
class C extends class extends class extends D {}
так тоже все работает

Сергей
13.03.2018
20:29:00

Le
13.03.2018
20:29:01

Adv0cat
13.03.2018
20:29:18
holly shit)
Откровения за откровениями))

andretshurotshka?❄️кде
13.03.2018
20:30:08
ты че не жсер и динамическую адуху не пишешь?

Сергей
13.03.2018
20:30:09

Le
13.03.2018
20:31:14
уф

Morsik
13.03.2018
20:31:28
красиво

Adv0cat
13.03.2018
20:34:04

andretshurotshka?❄️кде
13.03.2018
20:34:31
как так

Adv0cat
13.03.2018
20:35:30
это шо за ес некст такой?)

Сергей
13.03.2018
20:36:26