正如主题所暗示的,当函数本身作为参数传递给类构造函数时,如何在编辑器(例如VSCode)中强制执行函数参数类型?这适用于复杂类型。在下面的简单示例中,使用不正确的(int)参数而不是正确的(String)参数调用传递的add()函数时,vscode linter不会打cup:
class ChildClass {
final Function add;
ChildClass(this.add);
...
add('this is a string'); <---- HOW TO ENFORCE STRING ARGUMENT TYPE?
add(5); <----- EDITOR (VSCODE) should hiccup currently doesn't
}
class ParentClass {
int _add(String text) { <--- ARGUMENT OF TYPE STRING
// some code
}
final childClass = ChildClass(_add); <-- pass add() as argument to ChildClass ctor
}
不确定这是vscode linter问题还是dart问题或两者。感激不尽。
答案 0 :(得分:3)
您可以内联指定功能类型
class ChildClass {
final int Function(String text) add;
或作为typedef
typedef AddFn = int Function(string text);
class ChildClass {
final AddFn add;
另请参见