跳到主要內容

strict_top_level_inference

穩定
可用的修正

指定類型註解。

詳細資訊

#

對於頂層和類別型成員宣告,當類型不是從超介面或初始化器推斷而來時,請進行類型註解。

此 lint 警告關於每個被省略的返回類型、參數類型和頂層宣告或類別型命名空間層級宣告(靜態或實例成員或建構子宣告)的變數類型,這些類型不是由推斷給定的,因此預設為 dynamic。

唯一可以通過頂層推斷給定類型的省略類型,是那些具有初始化表達式的變數宣告,以及覆蓋一致組合超介面簽名的實例成員的返回和參數類型。

Setters 不需要返回類型,因為它始終被假定為 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 map 語法來配置 linter 規則,請在 linter > rules 下新增 strict_top_level_inference: true

analysis_options.yaml
yaml
linter:
  rules:
    strict_top_level_inference: true