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