跳到主要內容

strict_top_level_inference

穩定
核心
可修復

指定型別註解。

詳情

#

對頂級和類成員宣告進行型別註解,如果型別不能從父介面或初始化器推斷出來的話。

此 lint 規則會針對頂級宣告或類級別名稱空間宣告(靜態或例項成員或建構函式宣告)中所有被省略的返回型別、引數型別和變數型別發出警告,這些型別不能透過型別推斷獲得,因此會預設為 dynamic。

唯一可以透過頂級型別推斷獲得型別的省略型別,是那些帶有初始化表示式的變數宣告的型別,以及覆蓋一致組合的父介面簽名的例項成員的返回型別和引數型別。

Setter 不需要返回型別,因為它總是被假定為 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

如果你的 linter 規則配置使用的是 YAML map 語法,請在 linter > rules 下新增 strict_top_level_inference: true

analysis_options.yaml
yaml
linter:
  rules:
    strict_top_level_inference: true