
Vlad
29.11.2017
05:32:45
и дальше: Reflect.getMetadata и тп

andretshurotshka?❄️кде
29.11.2017
05:39:35
Если Test2 это класс конечно

Vlad
29.11.2017
06:13:18
Занимательные задачки.
function hello(componentClass) {
console.log(x(componentClass));
}
Используется как:
hello(MyComponent);
Ожидаю увидеть в консоли: MyComponent.
Чему равен X?
Хочу передать класс компонента в метод и получить его название. Как это сделать?

Google

Vlad
29.11.2017
06:13:41
Reflect.getMetadataKeys(component)
возвращает 2 ключа
annotations
и propMetadata
из этого назв класса мне не получить.
гм
есть вариант получить селектор похоже
что-то типа того:
function getSelector(componentClass) {
const annotations = Reflect.getMetadata('annotations', componentClass);
const componentMetadata = annotations[0] || {};
return componentMetadata.selector;
}
это ужасно
Юзаю Angular 4. Из metadata компонента беру selector.
Варианты сделать это более адекватно есть?

Bohdan
29.11.2017
06:54:36

Nikolay
29.11.2017
07:41:31

Google

Vlad
29.11.2017
07:41:49
test - это array
тебя интересует не тест, судя по твоим словам

Nikolay
29.11.2017
07:42:28
меня интересует тип содержимого array
чтобы динамически создать это

Vlad
29.11.2017
07:43:01
> Reflect.getMetadata("design:type", target, propertyKey); возвращает в данном случае Array =)
я тогда не понимаю тебя тут
зачем если тебя интересует тип содержимого проверяешь сам array
проверяй test[0] или вроде того ?

Nikolay
29.11.2017
07:46:29
Весь прикол в том, что там ничего нету вначале. Т.е.
class Test {
@create
public test: Test2[];
}
а затем я пишу let a = new Test();
a.test.forEach(e => ... ); // в момент доступа к массиву я хочу его динамически создать и заполнить на основании параметров декоратора
@vladsharikov я просто на базе этого хочу построить pageObjectы динамические. Пример выше
когда я обращаюсь к полю, я создаю это поле, дергая WebdriverIO
Вопрос в том, как нормально реализовать вложенные PO, и массивы вложенных PO
пока я думаю передавать функцию-конструктор, но может есть способ обойтись без этого?

Bohdan
29.11.2017
07:54:37

Nikolay
29.11.2017
07:57:18
Надо посмотреть, может поможет. У меня нет никакой проблемы на лету подставить то, что надо, проблема создать это для вложенных массивов объектов. А для этого надо понять тип элементов массива. Что вроде бы пока нормально не реализовано.

Bohdan
29.11.2017
07:59:17

Nikolay
29.11.2017
08:08:28
Мне больше интересно, может какой еще способ адекватный есть?

Bohdan
29.11.2017
08:10:56
А отправь код не картинкой, бо с телефона неудобно

Nikolay
29.11.2017
08:12:52
Окей, сейчас =)
export class AuthPageObject extends BasePageObject {
@child(".txtpad", e => new AuthPageObjectRow(e))
public rows: AuthPageObjectRow[];
@child(".txtpad")
public row: AuthPageObjectRow;
@input('#username')
public username: string;
@input('#password')
public password: string;
@selector('#SubmitCreds')
public loginBtn: Element;
@selector('input')
public inputs: Element[];
}
все различные варианты того, что может содержать у меня объект сейчас

Google

Nikolay
29.11.2017
08:14:32
мне интересен конретно этот случай
@child(".txtpad", e => new AuthPageObjectRow(e))
public rows: AuthPageObjectRow[];
я пока думаю так решить эту проблему (не уверен, что сработает, пока не проверял)

Bohdan
29.11.2017
08:15:03
Ага, и конкретнее что тебе нужно с ним сделать?
Походу я твоей задачи не понял

Nikolay
29.11.2017
08:16:22
Хочу писать так
let po = new AuthPageObject();
po.rows.forEach(e => ...);
и rows хочу чтобы создалось на основании текста селектора автоматически (вытянулось из селениума)
И тут возникает вопрос - как понять что лежит в массиве
Reflect.getMetadata("design:type", target, propertyKey); возвращает в данном случае Array =(

Bohdan
29.11.2017
08:19:06
Сохрани эти данные реально от рефлекта
Сделай для этого какие то структуры
И потом заполняй на основе этих данных
Посмотри typeorm
Там такой подход используется

Nikolay
29.11.2017
08:20:24
Окей, спасибо за наводку
Посмотрел - там примерно также сделано.
@ManyToMany(type => Photo, photo => photo.albums)
@JoinTable()
photos: Photo[];

Евгений
29.11.2017
08:37:29
Ребят, извиняюсь за глупый вопрос. Но если я хочу внести изменения в @types определенный, как правильно поступить? Никогда этого не делал

Олег
29.11.2017
08:38:53

Евгений
29.11.2017
08:40:28

Nikolay
29.11.2017
08:40:29
Наверное надо форкнуть https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/README.md
Форкаешь, изменяешь, делаешь пул-реквест, ждешь

Александр
29.11.2017
08:49:24
Никто не хочет типы для box2dweb написать? = )

Евгений
29.11.2017
08:56:59

Golodnyi
29.11.2017
09:00:23
создать ветку, если пр не примут, ветку можно просто дропнуть и основная версия не разойдется с оригиналом

Google

Ivan
29.11.2017
09:24:08
@Golodnyi напиши, подними карму :)

Golodnyi
29.11.2017
09:24:38

Artur
29.11.2017
09:25:58
Для начала сойдёт )

Karl
29.11.2017
09:41:37
А кто в vscode настраивал tslint чтобы он еще обычные js файлы проверял и показывал ошибки? Какую опцию включить надо?

Golodnyi
29.11.2017
09:47:57
есть же eslint

Admin
ERROR: S client not available

Karl
29.11.2017
10:29:53
И получается мне и eslint и tslint включать надо?
Я чет думал, что как-то можно внутри tslint все настроить, но не нахожу что-то как
Секцию jsRules заполнять не хочу, а то это как противоречит dry

D
29.11.2017
10:32:14
jsEnable включи
Нафиг не нужен еслинт

Karl
29.11.2017
10:33:22
Включил, vscode не подсвечивает

D
29.11.2017
10:40:11
Без jsRules не будет работать, скорее всего, если ничего не поменяли

Karl
29.11.2017
10:41:22

D
29.11.2017
10:46:55
Ну конфиг экстендится полностью, т.е. если в конфиге прописаны jsRules, то будет работать
Но они там тоже будут продублированы

Karl
29.11.2017
11:01:54
Нет, я имею ввиду, можно ли внутри секции jsRules поставить свой extend?

D
29.11.2017
11:12:36
Нет

Google

Евгений
29.11.2017
11:31:19
Ребят, а в течение какого времени вносят измения в тайпсы?

Morsik
29.11.2017
11:31:48
Пр послал?

Евгений
29.11.2017
11:32:53

Morsik
29.11.2017
11:33:29
Всмысле ты пуллреквест послал или заявку оставил?

Евгений
29.11.2017
11:33:37
пулл реквест

Morsik
29.11.2017
11:36:02
Неделя-две
Это с учетом правки ошибок

Евгений
29.11.2017
11:38:04
ну у меня судя по всему собралось, а чего так долго?

Morsik
29.11.2017
11:40:00
Хотя 2 недели это много

Karl
29.11.2017
12:05:24
ts поддерживает trailing commas в аргументах ф-ии?

Artur
29.11.2017
12:09:20
да

Karl
29.11.2017
12:12:52
С какой версии? Не в курсе?

Artur
29.11.2017
12:19:49

Ivan
29.11.2017
12:59:45
шрифты. В бан? :)

Ҫѐҏӗѫӑ
29.11.2017
13:01:41
не имеет отношения к чату
вакансии и сдельная работа в @javascript_jobs

Karl
30.11.2017
09:35:59
В интерфейсах корректно ставить символ ; ?

Виктор
30.11.2017
09:36:15
даже нужно

Karl
30.11.2017
09:36:30