地图函数类型中的Dart类继承

时间:2019-04-03 07:19:02

标签: dictionary inheritance dart polymorphism type-systems

.text-align-left-i {text-align: left !important;}

在上面的示例中,将class A {} class B extends A {} void fA(A a) {} void fB(B b) {} final Map<String, void Function(A)> m = {'test': fB}; 分配给fA是可行的,但是'test'会产生错误:

  

不能将元素类型fB分配给映射值类型'(B) → void'

是否有任何方法可以指定值类型为带有'(A) → void'或扩展参数的函数?

我也尝试过A,但这会产生另一个错误:

  

泛型函数不能是类型参数。

我发现编译项目的唯一方法是在赋值时强制转换值,这似乎违背了类型检查的目的,因为在这种情况下,值类型也可能是void Function<T extends A>(T)

dynamic

1 个答案:

答案 0 :(得分:0)

作为Dart编译器错误可能值得记录。