Generics Dart中泛型方法的类型检查似乎已中断

Generics Dart中泛型方法的类型检查似乎已中断,generics,dart,Generics,Dart,Dart中泛型方法的类型检查似乎已中断 在testGoodCall()中,如果类有一个泛型类型,则它会按预期工作,编译器会在传递的字符串上标记一个错误,该字符串应该是bool 但是从下面的示例代码中可以看出,编译器没有注意到testBadCall()中传递的第二个参数的类型不正确。 这是已知问题吗? 解决方法是什么?-不需要为每个方法创建一个类,我希望通过适当的类型检查来实现泛型 void testGoodCall() { var b = I<bool>(); b.testG

Dart中泛型方法的类型检查似乎已中断

在testGoodCall()中,如果类有一个泛型类型,则它会按预期工作,编译器会在传递的字符串上标记一个错误,该字符串应该是bool

但是从下面的示例代码中可以看出,编译器没有注意到testBadCall()中传递的第二个参数的类型不正确。

这是已知问题吗?

解决方法是什么?-不需要为每个方法创建一个类,我希望通过适当的类型检查来实现泛型

void testGoodCall() {
  var b = I<bool>();
  b.testGood(b, "");   // compiler flags an error on this line as expected
}

void testBadCall() {
  var b = I<bool>();
  b.testBad(b, "");   // compiler ignores the error this line should cause
}

class I<T> {
  void testGood(I<T> value1, T value) {}

  void testBad<A>(I<A> value1, A value) {}
}
void testGoodCall(){
var b=I();
b、 testGood(b,“”;//编译器按预期标记此行的错误
}
void testBadCall(){
var b=I();
b、 testBad(b,“”;//编译器忽略此行应引起的错误
}
第一类{
void testGood(I值1,T值){}
void testBad(I值1,A值){}
}

我认为它能按预期工作。在testBad示例中,您希望Dart自动为
a
找到一个类型,从而使
b.testBad(b,“”
有效。如果将
A
设置为类型
对象
,则它完全有效。您可以看到,如果打印类型:

  void testBad<A>(I<A> value1, A value) {
    print(A); // Object
  }
您得到了预期的错误

void testBadCall() {
  var b = I<bool>();
  b.testBad<String>(b, ""); // compiler returns: The argument type 'I<bool>' can't be assigned to the parameter type 'I<String>'
}