我应该输入类型吗?

Kod*_*ata 1 dart

创建变量时应该输入类型吗?

仅声明关键字“var”有什么缺点吗?

这两者有什么区别吗?

var a ? 0; int a ? 0;

om-*_*-ha 5

优点缺点

ONGOING WORK

最佳实践

推荐使用varorfinal关键字,不指定类型注解,隐式推断已知局部变量的类型。否则建议指定类型注释。至于dynamic关键字,当您进行手动类型检查时,在特定用例中应该非常谨慎地使用它。例如print(myVariable is SomeType)

omit_local_variable_typesDart linter 规则鼓励省略已知局部变量的类型注释。always_specify_types鼓励为不属于前 linter 规则范围的案例指定类型注释。

1. Flutter repo 风格指南

1.1避免使用var

所有变量和参数都是类型化的;在任何可以找出实际类型的情况下,请避免使用“动态”或“对象”。在可能的情况下,始终专门化泛型类型。显式键入所有列表和映射文字。

这实现了两个目的:验证编译器推断的类型是否与您期望的类型匹配,并且在类型不明显的情况下(例如,调用构造函数以外的任何内容时)使代码自记录。

始终避免使用“var”。如果您明确表示类型未知,请使用“动态”,但更喜欢“对象”和强制转换,因为使用动态会禁用所有静态检查。

2. Dart Lint 规则

2.1 omit_local_variable_types

考虑省略局部变量的类型注释。

通常,局部变量的类型很容易推断,因此不需要对其进行注释。

2.2 always_specify_types

务必指定类型注释。

var在指定类型未知和省略类型注释的简写时避免使用。使用dynamic如果要显式的类型是未知的。使用Object,如果你正在明确你想要一个对象实现==hashCode

参考

您可以参考Flutter repo 的样式指南Dart 的 Linter 支持的 Lint 规则的完整列表和Effective Dart 的样式指南

请注意,Flutter repo 的样式指南在 Flutter社区中使用,并且优先于 LinterRules 和 Effective Dart 的样式指南,尤其是在 repo 贡献中。据我所知,Flutter repo 的样式指南更像是一个超集样式指南,应该尊重 Dart Linter 规则。