首页 > 其他分享 >OpenHarmony—使用继承而非intersection type

OpenHarmony—使用继承而非intersection type

时间:2024-01-26 14:55:54浏览次数:27  
标签:OpenHarmony ArkTS string firstName lastName interface 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> = T extends number ? T: never
type Y<T> = T extends Array<infer Item> ? Item: never

ArkTS

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

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

// Item必须作为泛型参数使用,并能正确实例化
type YI<Item, T extends Array<Item>> = 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》的学习导图,从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:《https://docs.qq.com/doc/DZVVZR2lzcnJZSFlO》

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

一、入门必看

  1. 应用开发导读(ArkTS)

  2. ……
    二、HarmonyOS 概念

  3. 系统定义

  4. 技术架构

  5. 技术特性

  6. 系统安全

5........

三、如何快速入门?《https://docs.qq.com/doc/DZVVZR2lzcnJZSFlO》

  1. 基本概念

  2. 构建第一个ArkTS应用

  3. 构建第一个JS应用

  4. ……
    四、开发基础知识

  5. 应用基础知识

  6. 配置文件

  7. 应用数据管理

  8. 应用安全管理

  9. 应用隐私保护

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

  11. 资源分类与访问

  12. 学习ArkTS语言

  13. ……

    五、基于ArkTS 开发

  14. Ability开发

  15. UI开发

  16. 公共事件与通知

  17. 窗口管理

  18. 媒体

  19. 安全

  20. 网络与链接

  21. 电话服务

  22. 数据管理

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

  24. 设备管理

  25. 设备使用信息统计

  26. DFX

  27. 国际化开发

  28. 折叠屏系列

  29. ……

    更多了解更多鸿蒙开发的相关知识可以参考:《https://docs.qq.com/doc/DZVVZR2lzcnJZSFlO》

标签:OpenHarmony,ArkTS,string,firstName,lastName,interface,intersection,type
From: https://www.cnblogs.com/11usd/p/17989403

相关文章

  • 发送 POST 请求时常见 Content-Type 的设置以及参数传递
    0.前置须知1.你需要知道此文是归来仍是制杖专用笔记,主打我88岁也能看懂;此文只考虑请求,且get请求因语义,一般没有请求体,故不需要指定Content-Type;对于请求,Content-Type的作用是:告诉服务端我携带的请求体容器是什么格式;对于响应,Content-Type的作用是:告诉浏览器按什么......
  • 使用命令行方式搭建uni-app + Vue3 + Typescript + Pinia + Vite + Tailwind CSS + uv
    使用命令行方式搭建uni-app+Vue3+Typescript+Pinia+Vite+TailwindCSS+uv-ui开发脚手架项目代码以上传至码云,项目地址:gitee.com/breezefaith…目录一、前言近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台......
  • 5-The Untyped Lambda Calculus
    引入在lambda演算中,所有事物都是函数lambda演算式中有三种项:变量x,形如x变量x在另外一个项t1中的抽象abstraction,形如λx.t1将项t1作用于t2,形如t1t2有如下的简单的递归定义来总结上述三种项的形式:t::=x(variable)λx.t(abstrac......
  • OpenHarmony—TypeScript到ArkTS约束说明
    对象的属性名必须是合法的标识符规则:arkts-identifiers-as-prop-names级别:错误在ArkTS中,对象的属性名不能为数字或字符串。通过属性名访问类的属性,通过数值索引访问数组元素。TypeScriptvarx={'name':'x',2:'3'};console.log(x['name']);console.log(x[2]);ArkT......
  • Python requests模块POST提交请求,不同Content-type对应的参数示例
    1.'content-type':'application/x-www-form-urlencoded'data参数提交文本或字典都可以headers为空时,data提交content-type默认也是application/x-www-form-urlencodedrequests.post(url,headers={'content-type':'application/x-www-form-urlencoded'}......
  • 记一下,0805贴片封装、QFN封装、type-c母头的焊接
    前段时间,出差内蒙古乌海,项目接近尾声了,在宾馆里晒太阳也挺无聊的,就准备学低功耗蓝牙开发了。之前失败的经历在22年7月份,我就开始鼓捣低功耗蓝牙了,那时候用的是还带以太网的QFN芯片,引脚更多了,我买了加热台,开了钢网,打了两次样板,最后还是没跑起来,就放弃了!这次焊接主要用的耗材和工具......
  • webstorm报错:ESLint: TypeError: this.libOptions.parse is not a function
     解决办法:把 {**/*,*}.{js,ts,jsx,tsx,html,vue}换成{**/*,*}.(js,ts,jsx,tsx,html,vue) 原文:https://stackoverflow.com/questions/73509984/eslint-typeerror-this-liboptions-parse-is-not-a-functionMyfriends,ifyouareusing Webstorm orany Jetbrains p......
  • 【小记】MSMF 框架开发 UVC 摄像头如何正确设置 MF_MT_SUBTYPE
    简单说一下:IMFSourceReader有两个可以获取 IMFMediaType对象的接口,分别是 GetNativeMediaType与 GetCurrentMediaType。初始化时调用 GetCurrentMediaType获得的IMFMediaType对象(此时为硬件默认情况下自动选择的对象)再进行修改是不能用于SetCurrentMediaType的,即......
  • [转帖]Data Types
    https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Data-Types.html#GUID-A3C0D836-BADB-44E5-A5D4-265BA5968483EachvaluemanipulatedbyOracleDatabasehasa datatype.Thedatatypeofavalueassociatesafixedsetofpropertieswith......
  • 3-Untyped Arithmetic Expressions
    导论这一章节和下一章节构建了一套工具服务于仅含布尔值和数值的小型语言这个小型语言非常简单,但是可以承载几个非常重要的概念抽象语法abstractsyntax归纳定义和证明inductivedefinitionsandproofs求值evaluation运行时错误runtimeerror这个小型语言用到以下几......