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