? 表示可缺省。對于 TypeScript 來說就是可選項,在完成前不需要賦值(或賦 undefined,但 ? 所表示的可缺省不包含 null)。 未標記 ? 的成員必須在構造完成前賦值,這個值的類型是類型聲明包含的類型。如果類型聲明中包含 undefined 或 null,也可以賦成 undefined 或 null。 標記為 ? 的變量在使用之前通常需要檢查是否有值,因為如果不能保證其有值,編譯器就會報錯出來。但有些時候,我們可以通過邏輯保證在在構造之后,使用之前一定有值,比如說在一個專門的初始化函數中進行了賦值 —— 這種情況下編譯器是不能推斷出來的,使用這些屬性的時候仍然需要進行空檢查,很繁瑣。為了避免這種情況,可以把它聲明為 ! 標記的,告訴編譯器不需要進行空安全檢查,由開發者自己邏輯保證其空安全。
?
表示可缺省。對于 TypeScript 來說就是可選項,在完成前不需要賦值(或賦 undefined,但?
所表示的可缺省不包含null
)。未標記
?
的成員必須在構造完成前賦值,這個值的類型是類型聲明包含的類型。如果類型聲明中包含 undefined 或 null,也可以賦成 undefined 或 null。標記為
?
的變量在使用之前通常需要檢查是否有值,因為如果不能保證其有值,編譯器就會報錯出來。但有些時候,我們可以通過邏輯保證在在構造之后,使用之前一定有值,比如說在一個專門的初始化函數中進行了賦值 —— 這種情況下編譯器是不能推斷出來的,使用這些屬性的時候仍然需要進行空檢查,很繁瑣。為了避免這種情況,可以把它聲明為!
標記的,告訴編譯器不需要進行空安全檢查,由開發者自己邏輯保證其空安全。