我有一堂课
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;
答案 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。