omit_obvious_local_variable_types
省略局部变量的明显类型注释。
此规则目前是实验性的,并且从 Dart 3.6 开始可用。
此规则有一个可用的快速修复。
不兼容的规则:always_specify_types
详情
#当类型明显时,不要为初始化的局部变量添加类型注释。
局部变量,尤其是在现代代码中,函数往往很小,作用域很小。省略类型可以使读者的注意力集中在变量更重要的名称及其初始值上。因此,应该省略明显的局部变量类型注释。
错误
List<List<Ingredient>> possibleDesserts(Set<Ingredient> pantry) {
List<List<Ingredient>> desserts = <List<Ingredient>>[];
for (final List<Ingredient> recipe in cookbook) {
if (pantry.containsAll(recipe)) {
desserts.add(recipe);
}
}
return desserts;
}
const cookbook = <List<Ingredient>>[....];
正确
List<List<Ingredient>> possibleDesserts(Set<Ingredient> pantry) {
var desserts = <List<Ingredient>>[];
for (final List<Ingredient> recipe in cookbook) {
if (pantry.containsAll(recipe)) {
desserts.add(recipe);
}
}
return desserts;
}
const cookbook = <List<Ingredient>>[....];
有时推断的类型不是您希望变量具有的类型。 例如,您可能打算稍后分配其他类型的值。您可能还希望显式编写类型注释,因为初始化表达式的类型不明显,并且这将有助于代码的未来读者记录此类型。或者,您可能希望提交特定类型,以便将来更新依赖项(在附近的代码中、在导入中、任何地方)不会静默更改该变量的类型,从而在变量使用位置引入编译时错误或运行时错误。在这些情况下,请继续使用您想要的类型注释变量。
正确
Widget build(BuildContext context) {
Widget result = someGenericFunction(42) ?? Text('You won!');
if (applyPadding) {
result = Padding(padding: EdgeInsets.all(8.0), child: result);
}
return result;
}
此规则是实验性的。它正在评估中,可能会被更改或删除。欢迎就其行为提供反馈!主要问题在这里:https://github.com/dart-lang/linter/issues/3480。
用法
#要启用 omit_obvious_local_variable_types
规则,请在 analysis_options.yaml
文件中的 linter > rules 下添加 omit_obvious_local_variable_types
linter:
rules:
- omit_obvious_local_variable_types
除非另有说明,否则本网站上的文档反映的是 Dart 3.6.0。页面最后更新于 2024-07-03。 查看源代码 或报告问题。