Size: a a a

React: русскоязычное сообщество

2020 April 28

ЮЧ

Юра Чеботаев in React: русскоязычное сообщество
Евгений Монахов
одинаковые имена как разрешать?
Выбрасывать ошибку, если есть конфликт имен.
источник

ЮЧ

Юра Чеботаев in React: русскоязычное сообщество
А, собственно, разрешать уже в конкретном месте:

class Foo {
 bar() { return 1 }
}

class Bar {
 bar() { return 2 }
}

class Bak extends compose(Foo, Bar) {
 bar() {
      const foo = compose.getInstance(this, Foo)
      const bar = compose.getInstance(this, Bar)
      return foo + bar
   }
}
источник

ЕМ

Евгений Монахов in React: русскоязычное сообщество
что-то корявенькое получается. Не потомок ни одного из них
источник

ЕМ

Евгений Монахов in React: русскоязычное сообщество
а если конструктор требует параметры?
источник

T

The Fallen Phoenix in React: русскоязычное сообщество
Aleksandr
ну символ вообще странное "нововведение", ни разу не видел, где бы он был оправдан
Это заблуждение. Символы это железная защита от коллизии имен в конфиге.
источник

T

The Fallen Phoenix in React: русскоязычное сообщество
Юра Чеботаев
У меня всю дорогу было желание сделать что-то типа compose(Foo, Bar), который делает композицию классов с объединением интерфейса.
Кстати, я сейчас примерно этот вопрос и прорабатываю — а конкретно
1. взял awilix
2. Выкинул оттуда все лишнее
3. ??
4. Profit
источник

T

The Fallen Phoenix in React: русскоязычное сообщество
Например под нож пошла классическая схема разрешения по имени переменной ибо она ломается при минификации
источник

ЮЧ

Юра Чеботаев in React: русскоязычное сообщество
Евгений Монахов
а если конструктор требует параметры?
Просто конструктор принимает массивы аргумертов в порядке, указанном в compose.

class Bak extends compose(Foo, Bar) {
 constructor({foo, bar}) {
     super([foo], [bar])
   }
}
источник

T

The Fallen Phoenix in React: русскоязычное сообщество
Вот сейчас потихоньку думаю как сделать так, чтобы было подключаемое поведение, результатом которого был бы класс, полученный композицей используя инстансы с контейнера
источник

T

The Fallen Phoenix in React: русскоязычное сообщество
Юра Чеботаев
Просто конструктор принимает массивы аргумертов в порядке, указанном в compose.

class Bak extends compose(Foo, Bar) {
 constructor({foo, bar}) {
     super([foo], [bar])
   }
}
А если такой класс имеет смысл только тогда, когда у  и Bar некоторый параметр совпадает
источник

T

The Fallen Phoenix in React: русскоязычное сообщество
Например путь к файлу
источник

ЮЧ

Юра Чеботаев in React: русскоязычное сообщество
The Fallen Phoenix
Кстати, я сейчас примерно этот вопрос и прорабатываю — а конкретно
1. взял awilix
2. Выкинул оттуда все лишнее
3. ??
4. Profit
Мне во всех реализация DI на js-е не нравится то, что они требуют, фактически, параллельной системы модулей.
источник

ЮЧ

Юра Чеботаев in React: русскоязычное сообщество
Я хочу просто делать все как обычно.
источник

T

The Fallen Phoenix in React: русскоязычное сообщество
Инициализацию и собственно композицию должно делать Поведение, натравленное на КонтекстРазрешенияЗависимостей
источник

ЮЧ

Юра Чеботаев in React: русскоязычное сообщество
А потом снаружи в конфиге указывать какие куда зависимости я хоч подсунуть.
источник

T

The Fallen Phoenix in React: русскоязычное сообщество
Я пока до такой абстракции дошел
источник

ЮЧ

Юра Чеботаев in React: русскоязычное сообщество
Проблема тут в локаторе.
источник

T

The Fallen Phoenix in React: русскоязычное сообщество
Юра Чеботаев
Мне во всех реализация DI на js-е не нравится то, что они требуют, фактически, параллельной системы модулей.
Я эту проблему и решаю сейчас)
источник

ЮЧ

Юра Чеботаев in React: русскоязычное сообщество
Мне все равно нужно придумывать какие-то имена и как их называть.
источник

ЮЧ

Юра Чеботаев in React: русскоязычное сообщество
А если ухитриться и называть классы по пути нахождения, то это будет ломать рефакторинги с перемещением файлов.
источник