OpenHarmony—僅允許在表達式中使用typeof運算符

2024年2月6日 23点热度 0人点赞

規則:arkts-no-type-query

級別:錯誤

ArkTS僅支持在表達式中使用typeof運算符,不允許使用typeof作為類型。

TypeScript

let n1 = 42;
let s1 = 'foo';
console.log(typeof n1); // 'number'
console.log(typeof s1); // 'string'
let n2: typeof n1
let s2: typeof s1

ArkTS

let n1 = 42;
let s1 = 'foo';
console.log(typeof n1); // 'number'
console.log(typeof s1); // 'string'
let n2: number
let s2: string

相關約束

  • 對象的屬性名必須是合法的標識符
  • 不支持Symbol() API
  • 不支持通過索引訪問字段
  • 不支持delete運算符
  • 不支持in運算符
  • 限制使用標準庫

部分支持instanceof運算符

規則:
arkts-instanceof-ref-types

級別:錯誤

在TypeScript中,instanceof運算符的左操作數的類型必須為any類型、對象類型,或者它是類型參數,否則結果為false。在ArkTS中,instanceof運算符的左操作數的類型必須為引用類型(例如,對象、數組或者函數),否則會發生編譯時錯誤。此外,在ArkTS中,instanceof運算符的左操作數不能是類型,必須是對象的實例。

不支持in運算符

規則:arkts-no-in

級別:錯誤

由於在ArkTS中,對象佈局在編譯時是已知的並且在運行時無法修改,因此,不支持in運算符。如果仍需檢查某些類成員是否存在,使用instanceof代替。

TypeScript

class Person {
  name: string = ''
}
let p = new Person();
let b = 'name' in p; // true

ArkTS

class Person {
  name: string = ''
}
let p = new Person();
let b = p instanceof Person; // true,且屬性name一定存在

相關約束

  • 對象的屬性名必須是合法的標識符
  • 不支持Symbol() API
  • 不支持通過索引訪問字段
  • 不支持delete運算符
  • 僅允許在表達式中使用typeof運算符
  • 限制使用標準庫

那麼要想成為一名鴻蒙高級開發,以上知識點是必須要掌握的,除此之外,還需要掌握一些鴻蒙應用開發相關的一些技術,需要我們共同去探索。

為了節省大傢一些查找的時間,這邊聯合幾位行業大佬,為大傢準備了一份《OpenHarmony4.0&Next》的學習導圖從入門到進階再到南北向開發實戰的一整套完整體系,想要學習了解更多鴻蒙開發的相關知識可以借鑒:鴻蒙HarmonyOS分佈式項目實戰

除了上面整理的思維導圖以外,這裡還特別整理的一份《鴻蒙 (Harmony OS)開發學習手冊》給大傢進行參考學習:

一、入門必看

1. 應用開發導讀(ArkTS)

2. ……

二、HarmonyOS 概念

1. 系統定義

2. 技術架構

3. 技術特性

4. 系統安全

5........

三、如何快速入門?一小時快速認識HarmonyOS

1. 基本概念

2. 構建第一個ArkTS應用

3. 構建第一個JS應用

4. ……

四、開發基礎知識

1. 應用基礎知識

2. 配置文件

3. 應用數據管理

4. 應用安全管理

5. 應用隱私保護

6. 三方應用調用管控機制

7. 資源分類與訪問

8. 學習ArkTS語言

9. ……

五、基於ArkTS 開發

1. Ability開發

2. UI開發

3. 公共事件與通知

4. 窗口管理

5. 媒體

6. 安全

7. 網絡與鏈接

8. 電話服務

9. 數據管理

10. 後臺任務(Background Task)管理

11. 設備管理

12. 設備使用信息統計

13. DFX

14. 國際化開發

15. 折疊屏系列

16. ……

更多了解更多鴻蒙開發的相關知識可以參考:鴻蒙4.0源碼開發架構分析pdf