null_check_on_nullable_type_parameter
不要对潜在可空的类型参数使用 null
检查。
详情
#不要对潜在可空的类型参数使用 null
检查。
给定一个具有可空边界(例如默认边界 Object?
)的泛型类型参数 T
,在使用类型为 T?
的变量时,很容易引入错误的 null
检查。具体来说,常见的情况是声明 T? x;
并希望断言 x
已被设置为类型 T
的有效值。一个常见的错误是使用 x!
来进行断言。这几乎总是错误的,因为如果 T
是一个可空类型,x
可以合法地持有 null
作为类型 T
的一个值。
错误示例
dart
T run<T>(T callback()) {
T? result;
(() { result = callback(); })();
return result!;
}
正确示例
dart
T run<T>(T callback()) {
T? result;
(() { result = callback(); })();
return result as T;
}
启用
#要启用 null_check_on_nullable_type_parameter
规则,请在你的 analysis_options.yaml
文件的 linter > rules 下添加 null_check_on_nullable_type_parameter
analysis_options.yaml
yaml
linter:
rules:
- null_check_on_nullable_type_parameter
如果你改用 YAML map 语法配置 linter 规则,请在 linter > rules 下添加 null_check_on_nullable_type_parameter: true
analysis_options.yaml
yaml
linter:
rules:
null_check_on_nullable_type_parameter: true