跳到主內容

null_check_on_nullable_type_parameter

空檢查運算子不應在型別為可能為空的型別引數的變數上使用。

描述

#

當對型別為 T? 的變數使用空檢查運算子時,分析器會生成此診斷,其中 T 是一個允許型別實參可為空(沒有上界或上界可為空)的型別引數。

給定一個具有可空上界的泛型型別引數 T,在使用 T? 型別的變數時很容易引入錯誤的空檢查。具體來說,常見的情況是定義 T? x; 並想斷言 x 已被設定為型別 T 的有效值。一個常見的錯誤是使用 x! 來實現。這幾乎總是錯誤的,因為如果 T 是一個可空型別,x 可能有效地持有 null 作為型別 T 的值。

示例

#

以下程式碼會產生此診斷,因為 t 的型別是 T?,並且 T 允許型別實參可為空(因為它沒有 extends 子句)。

dart
T f<T>(T? t) => t!;

常見修復

#

使用型別引數來轉換變數

dart
T f<T>(T? t) => t as T;