跳到主要内容

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

如果您改为使用 YAML 映射语法来配置 linter 规则,请在 linter > rules 下添加 strict_top_level_inference: true

analysis_options.yaml
yaml
linter:
  rules:
    strict_top_level_inference: true