Dart js-interop 和重载方法

Dart js-interop and overloaded methods

你如何处理与具有重载方法的 JS 库的接口?
例如 Leaflet.js 为 Map 对象定义了以下两个:

openPopup(popup); // opens the given popup
openPopup(html, LatLng, popOptions); // creates a popup with the html at the location, using the popup options.

我想出的是:

@JS("L.Map")
class Map {
   /* code */
   external Map openPopup(dynamic popup, [LatLng coords, PopupOptions opts]);
   /* code */
}

有没有更好的方法?注意:这似乎有效,但分析器抱怨:没有为 class 地图定义方法 openPopup。

飞镖:1.17.1
package:js-0.6.0

到目前为止,我无法使用 JS() 指令为实例 member/method 指定不同的名称,这是一个大问题,尤其是对于具有方法名称的 javascript 对象与 Dart 关键字冲突(例如 javascript Promise 中的 'catch')。我最终使用了普通 dart:js。无论如何,即使在使用 package/js 时,我最终还是添加了另一层以使 api 更加简洁(尤其是回调和承诺),尤其是强制执行参数类型。

我希望能够做到(在你的例子中)

@JS("L.Map")
class Map {
   JS('openPopup')
   external Map openPopupHtml(String html, [LatLng coords, PopupOptions opts]);
   JS('openPopup')
   external Map openPopup(Popup popup);
}

但这似乎不起作用。也许应该将其视为功能增强。