1
作爲我的問題Dart JS Library, how to pass callback functions的後續,我想確保傳遞給D3的任何函數都有正確的參數。Dart Js-Interop函數類型參數
所以我想這樣做以下:當我調用該方法
@JS('d3')
library d3;
import 'dart:js';
import "package:js/js.dart";
typedef num D3AccessorFunction(List<num> d, num i, List<List<num>> data);
@JS('line')
class Line {
external Line();
external String call (List<List<num>> data);
external Line x(D3AccessorFunction func);
external Line y(num func(List<num> d, num i, List<List<num>> data));
}
然後:
Line line = new Line();
line.x(
allowInterop(
(List<num> d, num i, List<List<num>> data) {
return d[0]+10;
}
)
);
我想它抱怨,如果該參數不正確匹配,例如,
line.x(
allowInterop(
(List<num> d) {
return d[0]+10;
}
)
);
不幸的是,allowInterop吞下這個投訴,你不能得到 擺脫它。 我創建了一個變通辦法(在D3的定義):
Function d3Function(D3AccessorFunction function) {
return allowInterop(function);
}
然後我把它稱爲是這樣的:
line.x(
d3Function(
(List<num> d, num i, List<List<num>> data) {
return d[0]+10;
}
)
);
這將拋出正確的錯誤。但我想知道是否有更好的方法來做到這一點。