メインコンテンツにスキップ

strict_top_level_inference

安定版
コア
修正が利用可能です

型アノテーションを指定します。

詳細

#

トップレベルおよびクラスのようなメンバー宣言には、スーパークラスインターフェースまたは初期化式から型が推論されない場合に、型注釈を付けます。

このリンターは、トップレベル宣言またはクラス名前空間レベル宣言(静的メンバー、インスタンスメンバー、またはコンストラクター宣言)で、型が推論されず、したがってデフォルトでdynamicになる、省略されたすべての戻り値の型、パラメーターの型、および変数の型について警告します。

トップレベル推論で型を指定できる唯一の省略された型は、初期化式を持つ変数宣言の型、および一貫した結合されたスーパークラスインターフェースシグネチャをオーバーライドするインスタンスメンバーの戻り値の型とパラメーターの型です。

セッターには戻り値の型は必要ありません。常にvoidであると想定されるためです。

悪い例

dart
var _zeroPointCache;
class Point {
  get zero => ...;
  final x, y;
  Point(x, y) {}
  closest(b, c) => distance(b) <= distance(c) ? b : c;
  distance(other) => ...;
}
_sq(v) => v * v;

良い例

dart
Point? _zeroPointCache;
class Point {
  Point get zero => ...;
  final int x, y;
  Point(int x, int y) {}
  closest(Point b, Point c) =>
      distance(b) <= distance(c) ? b : c;
  distance(Point other) => ...;
}
int _sq(int v) => v * v;

有効にする

#

strict_top_level_inferenceルールを有効にするには、analysis_options.yamlファイルで、linter > rulesの下にstrict_top_level_inferenceを追加してください。

analysis_options.yaml
yaml
linter:
  rules:
    - strict_top_level_inference

代わりにリンター ルールを構成するために YAML マップ構文を使用している場合は、linter > rulesの下にstrict_top_level_inference: trueを追加してください。

analysis_options.yaml
yaml
linter:
  rules:
    strict_top_level_inference: true