使用泛型进行Dart类型检查

时间:2019-03-10 22:51:44

标签: dart

我有一堂课

  class StreamWithValue<T> extends Stream<T> {
  T value;
  ...
  }

现在:

  Stream<bool> _stream;
  StreamWithValue<bool> get stream=> _stream;

即使它不正确,该编译也不会出错,因为显然_stream的类型不是StreamWithValue。有没有办法进行更严格的类型检查?我正在使用Dart 2.1.2,Android Studio 3.3.2。奇怪的是,编译器在此处正确找到错误:

  StreamWithValue get stream2 => _stream;

1 个答案:

答案 0 :(得分:1)

默认情况下,Dart 2允许隐式向下转换到派生类型。要禁止它们,请在您的analysis_options.yaml文件中(必要时创建),设置:

analyzer:
  strong-mode:
    implicit-casts: false

这样做会产生分析错误:

  

返回类型'Stream'不是方法'stream'定义的'StreamWithValue'。

您可能还对以下设置感兴趣:

analyzer:
  strong-mode:
    implicit-dynamic: false

有关更多信息,请参见https://www.dartlang.org/guides/language/analysis-options