跳到主要内容

null_check_on_nullable_type_parameter

稳定版
核心
提供修复

不要在可能为空的类型参数上使用 null 检查。

详情

#

不要在可能为空的类型参数上使用 null 检查。

给定一个具有可空边界的泛型类型参数 T(例如,默认边界 Object?),当使用 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 映射语法来配置 linter 规则,请在 linter > rules 下添加 null_check_on_nullable_type_parameter: true

analysis_options.yaml
yaml
linter:
  rules:
    null_check_on_nullable_type_parameter: true