#dart
#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:
По умолчанию Dart 2 допускает неявные понижения для производных типов. Чтобы запретить их, в вашем analysis_options.yaml
файле (создавая его при необходимости) установите:
analyzer:
strong-mode:
implicit-casts: false
Это приведет к возникновению ошибки анализа:
Возвращаемый тип ‘Stream’ не является ‘StreamWithValue’, как определено методом ‘stream’.
Вас также может заинтересовать настройка:
analyzer:
strong-mode:
implicit-dynamic: false
Для получения дополнительной информации см.https://www.dartlang.org/guides/language/analysis-options .