Dart / vscode:将函数本身作为构造函数的参数传递时,强制执行函数参数类型

时间:2018-10-03 21:03:25

标签: visual-studio-code dart

正如主题所暗示的,当函数本身作为参数传递给类构造函数时,如何在编辑器(例如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问题或两者。感激不尽。

1 个答案:

答案 0 :(得分:3)

您可以内联指定功能类型

class ChildClass {

   final int Function(String text) add;

或作为typedef

typedef AddFn = int Function(string text);

class ChildClass {

   final AddFn add;

另请参见