Dart 團隊宣布,Dart 編程語言通過其新的 null safety 功能的技術預覽達到了一個新的主要里程碑。該團隊表示,此功能已經開發了一年多,是自Dart 2 以來Dart 語言最大的新增功能。Null safety 現已可在DartPad 版本中進行試用,并將于 2020 年底投入生產。
團隊成員 Filip Hracek 和 Michael Thomsen 在帖子中寫道:“Null safety 可以幫助你避免一類通常難以發現的 bug,并且作為額外的獎勵,可以實現一系列的性能改進。”
Dart 是一種 type-safe 語言,這意味著編譯器可以保證變量的類型,但是類型安全性本身不能保證變量不為 null。Null error 在 Dart 中是常見的,并導致 Dart 代碼中出現了許多問題。
Null safety 為開發人員保證他們的代碼不包含 null 元素。且 Null safety 在編寫代碼時會提供靜態錯誤,因此開發人員不必等到代碼在運行時編譯后即可發現錯誤。
Dart 團隊設計此功能時秉承的三個核心原則為:
它必須在默認情況下是 non-nullable,以便開發人員可以明確聲明變量何時可以為 null。
它必須是逐步采用的,這意味著 null-safe 代碼和 non-null-safe 代碼可以在同一項目中一起存在。
第三,它必須 fully sound。
根據該團隊的說法,Dart 的 null safety 是向后兼容的,不是突破性的變化。這意味著現有代碼可以調用使用 null safety 的代碼,并且 null safety 將在可用時成為可選功能。
從現在開始,其會添加更多新功能來逐步完善自身,例如添加遷移工具、pub.dev 上的標簽(用于顯示軟件包是否支持 null safety)以及對 “pub outdated”命令的擴展,增加了對查找支持 null safety 的依賴版本的支持。
有關 null safety 的更多信息及其代碼示例,可參見此處。