OpenHarmony—使用继承而非intersection type

使用继承而非intersection type

规则:arkts-no-intersection-types

级别:错误

目前ArkTS不支持intersection type,可以使用继承作为替代方案。

TypeScript

interface Identity {
  id: number
  name: string
}

interface Contact {
  email: string
  phoneNumber: string
}

type Employee = Identity & Contact

ArkTS

interface Identity {
  id: number
  name: string
}

interface Contact {
  email: string
  phoneNumber: string
}

interface Employee extends Identity,  Contact {}

不支持this类型

规则:arkts-no-typing-with-this

级别:错误

ArkTS不支持this类型,改用显式具体类型。

TypeScript

interface ListItem {
  getHead(): this
}

class C {
  n: number = 0

  m(c: this) {
    // ...
  }
}

ArkTS

interface ListItem {
  getHead(): ListItem
}

class C {
  n: number = 0

  m(c: C) {
    // ...
  }
}

不支持条件类型

规则:arkts-no-conditional-types

级别:错误

ArkTS不支持条件类型别名,引入带显式约束的新类型,或使用Object重写逻辑。 不支持infer关键字。

TypeScript

type X = T extends number ? T: never
type Y = T extends Array ? Item: never

ArkTS

// 在类型别名中提供显式约束
type X1 = T

// 用Object重写,类型控制较少,需要更多的类型检查以确保安全
type X2 = Object

// Item必须作为泛型参数使用,并能正确实例化
type YI> = Item

不支持在constructor中声明字段

规则:arkts-no-ctor-prop-decls

级别:错误

ArkTS不支持在constructor中声明类字段。在class中声明这些字段。

TypeScript

class Person {
  constructor(
    protected ssn: string,
    private firstName: string,
    private lastName: string
  ) {
    this.ssn = ssn;
    this.firstName = firstName;
    this.lastName = lastName;
  }

  getFullName(): string {
    return this.firstName + ' ' + this.lastName;
  }
}

ArkTS

class Person {
  protected ssn: string
  private firstName: string
  private lastName: string

  constructor(ssn: string, firstName: string, lastName: string) {
    this.ssn = ssn;
    this.firstName = firstName;
    this.lastName = lastName;
  }

  getFullName(): string {
    return this.firstName + ' ' + this.lastName;
  }
}

接口中不支持构造签名

规则:arkts-no-ctor-signatures-iface

级别:错误

ArkTS不支持在接口中使用构造签名。改用函数或者方法。

TypeScript

interface I {
  new (s: string): I
}

function fn(i: I) {
  return new i('hello');
}

ArkTS

interface I {
  create(s: string): I
}

function fn(i: I) {
  return i.create('hello');
}

相关约束

使用class而非具有构造签名的类型

那么要想成为一名鸿蒙高级开发,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术,需要我们共同去探索。

为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《OpenHarmony4.0&Next》的学习导图从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:《做鸿蒙应用开发到底学习些啥?》

OpenHarmony—使用继承而非intersection type_第1张图片

除了上面整理的思维导图以外,这里还特别整理的一份《鸿蒙 (Harmony OS)开发学习手册》给大家进行参考学习:

一、入门必看

1. 应用开发导读(ArkTS)

2. ……

OpenHarmony—使用继承而非intersection type_第2张图片

二、HarmonyOS 概念

1. 系统定义

2. 技术架构

3. 技术特性

4. 系统安全

5........

OpenHarmony—使用继承而非intersection type_第3张图片

三、如何快速入门?《鸿蒙开发学习指南》

1. 基本概念

2. 构建第一个ArkTS应用

3. 构建第一个JS应用

4. ……

OpenHarmony—使用继承而非intersection type_第4张图片

四、开发基础知识

1. 应用基础知识

2. 配置文件

3. 应用数据管理

4. 应用安全管理

5. 应用隐私保护

6. 三方应用调用管控机制

7. 资源分类与访问

8. 学习ArkTS语言

9. ……

OpenHarmony—使用继承而非intersection type_第5张图片

五、基于ArkTS 开发

1. Ability开发

2. UI开发

3. 公共事件与通知

4. 窗口管理

5. 媒体

6. 安全

7. 网络与链接

8. 电话服务

9. 数据管理

10. 后台任务(Background Task)管理

11. 设备管理

12. 设备使用信息统计

13. DFX

14. 国际化开发

15. 折叠屏系列

16. ……

OpenHarmony—使用继承而非intersection type_第6张图片

更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙基础入门开发宝典!》

你可能感兴趣的:(华为,鸿蒙开发,驱动开发,鸿蒙,鸿蒙系统,HarmonyOS,OpenHarmony)