Функция отображения дротиков как конструктор с взаимодействием узлов - PullRequest
0 голосов
/ 12 декабря 2018

Я недавно начал с разработки в Dart.Мне нужно запустить Dart на узле VM.В настоящее время мне необходимо создать взаимодействие с модулем внешнего узла.

Этот модуль предоставляет только функции конструктора.Я не могу найти способ создать класс Dart, который сопоставляется с пакетом.

Предполагается, что следующий экспорт модуля узла:

{
  Client: [Function: Client],
  Server: [Function: Server]
}

В этом сценарии я пытаюсь создать новыйэкземпляр клиента в моем рабочем пространстве Dart.Я создал следующие анонимные классы:

@JS()
@anonymous
abstract class ClientImpl {
  // ClientImpl(String, num);
  external String get host;
  external num get port;
}

@JS()
@anonymous
abstract class Module {
  ClientImpl Client(String, num);
}

Теперь я хочу сопоставить класс Module с модулем узла

final Module _module = require('...');

void main() {
  final client = _module.Client('192.168...', 1234);
}

Анализатор и компиляторы Dart не показывают ошибок при наборе.правильно в Javascript, используя dart2js.Теперь, когда я запускаю свой скомпилированный js-файл в узле VM, я получаю исключение при создании нового экземпляра Client.Требуется ключевое слово new.Когда я вручную добавляю новое ключевое слово в скомпилированный js-файл, я могу правильно создать экземпляр класса взаимодействия.

Я также попытался использовать вместо него typedef, но это не принесло никакого успеха.

typedef ClientFunc = ClientImpl Function(String, num);

Я не могу найти в Интернете примеров, описывающих мой конкретный сценарий.Есть здесь кто-нибудь, кто сталкивался с такой же проблемой или знает, что я делаю здесь неправильно?

Заранее спасибо

1 Ответ

0 голосов
/ 12 декабря 2018

Это не совсем ответ на мой вопрос, но сейчас я использую обходной путь ..

const { Client, Server } = require('...')

module.exports = {
  Client: (hostAddr, port) => new Client(hostAddr, port),
  Server: (...args) => new Server(...args)
}

Теперь вместо функции конструктора предоставляется нормальная функция.Однако должен быть способ решить вышесказанное без необходимости писать прокси для него, как этот.

...