@typescript_ru

Страница 419 из 669
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
Варианты сделать это более адекватно есть?
Класс что ты передаешь — обычная функция на уровне js. А у функций есть поле name что хранит в себе название этой функции

Nikolay
29.11.2017
07:41:31
и дальше: Reflect.getMetadata и тп
Reflect.getMetadata("design:type", target, propertyKey); возвращает в данном случае Array =)

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

пока я думаю передавать функцию-конструктор, но может есть способ обойтись без этого?

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

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:40:28
https://www.typescriptlang.org/docs/handbook/declaration-merging.html
ну я немного о другом, мне нужно дополнить тайпсы, то есть вопрос чисто про гит

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
Форкаешь, изменяешь, делаешь пул-реквест, ждешь
Делать коммит в master основной или создать ветку?

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
Никто не хочет типы для box2dweb написать? = )
declare module "box2dweb" { const exports: any; export = exports; }

Для начала сойдёт )

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 не подсвечивает

jsEnable включи
У тебя vscode подсвечивает?

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

Karl
29.11.2017
10:41:22
Без jsRules не будет работать, скорее всего, если ничего не поменяли
Эх, а весь airbnb конфиг туда как-то можно заэкстендить?

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
С какой версии? Не в курсе?
На моей памяти с версии 1

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


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