Я недавно начал с разработки в 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);
Я не могу найти в Интернете примеров, описывающих мой конкретный сценарий.Есть здесь кто-нибудь, кто сталкивался с такой же проблемой или знает, что я делаю здесь неправильно?
Заранее спасибо