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
除非另有说明,否则本网站上的文档反映的是 Dart 3.7.1 版本。页面上次更新于 2025-03-07。 查看源代码 或 报告问题。