跳到主要内容

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