跳到主要內容

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