鸿蒙进阶篇-type、typeof、类

embedded/2024/11/15 0:27:59/

“在科技的浪潮中,鸿蒙操作系统宛如一颗璀璨的新星,引领着创新的方向。作为鸿蒙开天组,今天我们将一同踏上鸿蒙基础的探索之旅,为您揭开这一神奇系统的神秘面纱。”

各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今天的学习,鸿蒙进阶篇-type、typeof、类

在鸿蒙开发中:

type:在鸿蒙开发中,可能没有特定的直接与 type 关键字相关的独特用法。但一般来说,type 通常用于表示数据类型。

typeof:在一些编程语言中,typeof 操作符用于获取变量或表达式的类型。但鸿蒙开发(如 ArkTS 语言)中可能没有这个特定的操作符。

类(Class):类是面向对象编程中的重要概念,用于定义具有相同属性和方法的对象的模板。在鸿蒙的 ArkTS 中,可以创建类来封装数据和行为,实现更清晰和可维护的代码结构。

ArkTS-回顾
在继续深入学习ArkTS之前先回顾一下核心的概念
附上官方文档链接icon-default.png?t=O83Ahttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/introduction-to-arkts-V5
1. ArkTS和 TS 以及 JS 的关系
a.JS: JavaScript,常用于网页开发,页面的效果
b.TS: TypeScript,微软开发的,比 JS 多了类型系统
c.ArkTS: JS、TS能用的,他 基本 都能用,写 UI
d.注意:看文档的时候,可能需要去 JS 的文档,TS 的文档找一部分的内容

2. 声明式 UI 开发范式

容器组件(参数)

{ 子组件.... }

.属性1()

.属性2()

.属性N()

普通组件(参数)

.属性1()

.属性2()

.属性N()

类型别名
类型别名,顾名思义就是给某个类型起别名,之后就可以通过这个别名来使用类型啦。咱们开发中用到的一些内置类型就是通过 type 来定义的哦

type 别名 = 类型 // 后续在使用类型时 直接使用【别名】即可

下面展示一个案例来理解:

// 定义类型别名
type IDType = string | number// 使用类型别名
function printID(id:IDType ) {console.log(id+'')
}// 调用函数
printID(10)
printID('20')@Entry
@Component
struct Page01_type {@State message: string = 'Type类型别名';build() {Row() {Column() {Text(this.message).fontSize(30).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}
}

typeof运算符
可以通过 typeof 运算符来获取类型,他返回的是一个字符串
附上官方文档链接

// 后面跟上需要获取类型的 数据或变量 即可

typeof 表达式

下面展示一个案例来理解:

// 前面 5 个可以正常获取到类型
console.log(typeof 123) // number
console.log(typeof '123') // string
console.log(typeof false) // boolean
console.log(typeof undefined) // undefinedfunction func() {
}console.log(typeof func) // functioninterface Person{name:string
}// 对象 数组 null 获取到的都是 object
const p: Person = {name:'jack'}
console.log(typeof null) // object
console.log(typeof [1, 2, 3]) // object
console.log(typeof p) // object@Entry
@Component
struct Page02_typeof {@State message: string = 'typeof';build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}
}


类是用于创建对象的模板。他们用代码封装数据以处理该数据。同时类声明也会引入一个新类型,并定义其字段、方法和构造函数。
附上官方文档链接icon-default.png?t=O83Ahttps://www.typescriptlang.org/docs/handbook/2/classes.html

// 类名 首字母大写(规范) class 类名{ // 字段 // 方法 // 构造函数 } // 使用类 实例化对象 基于类 创建对象 const x:类名 = new 类名()

实例属性
通过实例属性(字段)来保存各种类型的数据
附上官方文档链接icon-default.png?t=O83Ahttps://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining

// 类
class 类名{// 字段名+类型+初始值字段名:类型='xxx'// 可选字段可以不设置初始值字段名?:类型
}// 可选字段在使用时需要配合 可选链操作符 避免出错

下面展示一个案例来理解:

class Person {name: string = 'jack'food?: string
}const p = new Person()
p.name = 'jack'console.log(p.name)
console.log('', p.food?.length)

构造函数
上一节的代码实在 实例化 之后,挨个对属性进行赋值,如果自定义了构造函数,可以在构造函数中完成该操作

class 类{字段A:类型字段B:类型constructor(参数...) {// 通过 new 实例化的时候 会调用 constructor// 通过关键字 this 可以获取到实例对象}
}
const 实例 = new 类()

实例方法
类中可以定义 方法,并且在内部编写逻辑.这种方法需要通过实例化的对象调用-称之为实例方法

class 类名{方法名(参数...):返回值类型{// 逻辑...// 可以通过 this 获取实例对象}
}

静态属性、方法
类还可以添加静态属性、方法,后续访问需要通过 类 来完成
附上官方文档链接icon-default.png?t=O83Ahttps://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from

// 定义
class 类{static 字段:类型static 方法(){}
}// 使用
类.字段
类.方法()

继承
类可以通过 继承 快速获取另外一个类的 字段 和 方法。

class 父类 {// 字段// 方法// 构造函数
}class 子类 extends 父类{// 自己的字段(属性)// 自己的方法// 可以重写父类方法
}

父类:也可以叫做 基类 、超类 等
子类:也可以叫做 派生类、继承类 等

super 关键字
子类通过 super 可以访问父类的实例字段、实例方法和构造函数。可以在适当的时候使用

class 父类 {func(){}
}class 子类 extends 父类 {constructor() {super() // 调用父类构造函数}方法(){super.方法() // 调用父类方法}
}

instanceof
instanceof 运算符可以用来检测某个对象是否是某个类的实例
附上官方文档链接icon-default.png?t=O83Ahttps://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/instanceof

// 返回判断结果 布尔值
实例对象 instanceof Class

修饰符
类的方法和属性可以通过修饰符来 限制访问
附上官方文档链接icon-default.png?t=O83Ahttps://www.typescriptlang.org/docs/handbook/2/classes.html#readonly
附上官方文档链接icon-default.png?t=O83Ahttps://www.typescriptlang.org/docs/handbook/2/classes.html#member-visibility
修饰符包括:readonly、private、protected和public。省略不写默认为 public

readonly(只读)
readonly 的意思是只读,可以用来修饰属性(字段),修饰之后外部只可以取值,无法修改
附上官方文档链接icon-default.png?t=O83Ahttps://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/PI

class 类{readonly 属性:类型
}

private(私有)
private修饰的成员不能在声明该成员的类之外访问,包括子类

class 类{private 属性:类型private 方法(){}
}

protected(受保护)
protected修饰符的作用与private修饰符非常相似,不同点是protected修饰的成员允许在派生类(子类)中访问

class 父类{protect 属性:类型protect 方法(){}
}
class 子类 extends 父类{方法(){// 可以访问父类 protect 修饰的 属性、方法}
}

public(公共)
public修饰的类成员(字段、方法、构造函数)在程序的任何可访问该类的地方都是可见的。

class 类{public 属性public 方法(){}
}

修饰符名

作用

适用范围

访问限制

readonly

只读

属性

无限制

private

私有

属性、方法

类内部可以访问

protect

保护

属性、方法

类及子类可以访问

public

公共

属性、方法

无限制

以上是关于鸿蒙进阶篇-type、typeof、类综合的一些内容,方便大家学习,至此,关于鸿蒙进阶篇 - type、typeof、类综合的内容就介绍到这里,愿您能学以致用,开发出精彩的鸿蒙应用!

以上内容仅供学习交流,如有违法或者侵权可以联系删除。


http://www.ppmy.cn/embedded/137628.html

相关文章

【STM32外设系列】NRF24L01无线收发模块

NRF24L01是一款基于2.4GHz ISM频段的无线收发模块,它采用nRF24L01芯片,支持多通道通信和自动重发机制,非常适合用于短距离无线通信。本文将详细介绍如何使用STM32微控制器驱动NRF24L01模块,并通过代码实现无线数据的收发。 1. NR…

mysql 配置文件 my.cnf 增加 lower_case_table_names = 1 服务启动不了的原因

原因:在MySQL8.0之后的版本,只允许在数据库初始化时指定,之后不允许修改了 mysql 配置文件 my.cnf 增加 lower_case_table_names 1 服务启动不了 报错信息:Job for mysqld.service failed because the control process exited …

Window下PHP安装最新sg11(php5.3-php8.3)

链接: https://pan.baidu.com/s/10yyqTJdwH_oQJnQtWcwIeA 提取码: qz8y 复制这段内容后打开百度网盘手机App,操作更方便哦 (链接失效联系L88467872) 1.下载后解压文件,将对应版本的ixed.xx.win文件放进php对应的ext目录下,如图所示 2.修改ph…

【2024软考架构案例题】你知道 Es 的几种分词器吗?Standard、Simple、WhiteSpace、Keyword 四种分词器你知道吗?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

记一次工作中订单幂等处理方案

1.背景 有个项目会将本公司的下单接口通过Open API暴露到外网供第三方使用,最近收到商务反馈第三方公司,在重试的过程中多次使用同一个第三方订单号下单,导致我们业务系统出现了重复订单。我们系统并没有做幂等校验,数据库也没有对…

Labelme标注数据的一些操作

文章目录 1、删除没有标注的图片2、对图片重新命名3、对标注后的数据重新命名4、两个Labelme数据文件夹合并5、其他格式的图片转jpg6、Labelme的json文件中加入imagedata7、将json中的imagedata转为图像8、修改标注类别的名字 1、删除没有标注的图片 有些图片没有标注&#xf…

HCIP-快速生成树RSTP

一、RSTP是什么 STP(Spanning Tree Protocol )是生成树协议的英文缩写。该协议可应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。 RS…

P10901 [蓝桥杯 2024 省 C] 封闭图形个数

铁子们好呀,今天博主给大家更新一道编程题!!! 题目链接如下: P10901 [蓝桥杯 2024 省 C] 封闭图形个数 好,接下来,我将从三个方面讲解这道例题。分别是 题目解析算法原理代码实现 文章目录 1.题…