鸿蒙进阶篇-type、typeof、类

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

各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今天的学习,鸿蒙进阶篇-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.rhkb.cn/news/468123.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb合集23-文件上传

二十三 、 文件上传 实现效果&#xff1a;用户点击上传按钮、选择上传的头像&#xff0c;确定自动上传&#xff0c;将上传的文件保存到指定的目录中&#xff0c;并重新命名&#xff0c;生成访问链接&#xff0c;返回给前端进行回显。 1、前端实现 vue3AntDesignVue实现 <tem…

1.62亿元!812个项目立项!上海市2024年度“科技创新行动计划”自然科学基金项目立项

本期精选SCI&EI ●IEEE 1区TOP 计算机类&#xff08;含CCF&#xff09;&#xff1b; ●EI快刊&#xff1a;最快1周录用&#xff01; 知网(CNKI)、谷歌学术期刊 ●7天录用-检索&#xff08;100%录用&#xff09;&#xff0c;1周上线&#xff1b; 免费稿件评估 免费匹配期…

Flink安装和Flink CDC实现数据同步

一&#xff0c;Flink 和Flink CDC 1&#xff0c; Flink Apache Flink是一个框架和分布式处理引擎&#xff0c;用于对无界和有界数据流进行有状态计算。 中文文档 Apache Flink Documentation | Apache Flink 官方文档 &#xff1a;https://flink.apache.org Flink 中文社区…

VBA高级应用30例应用3在Excel中的ListObject对象:插入行和列

《VBA高级应用30例》&#xff08;版权10178985&#xff09;&#xff0c;是我推出的第十套教程&#xff0c;教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开&#xff0c;这套教程案例与理论结合&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以…

windows运行ffmpeg的脚本报错:av_ts2str、av_ts2timestr、av_err2str => E0029 C4576

问题描述 我目前的环境是&#xff1a; 编辑器&#xff1a; Microsoft Visual Studio Community 2022 (64 位) 运行的脚本是ffmpeg自带的remux样例&#xff0c;只不过我想用c语言执行这个样例。在执行的过程中报错如下图&#xff1a; C4576 后跟初始值设定项列表的带圆括…

如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?

以下是使用 Python 的爬虫技术获取淘宝天猫商品价格信息的两种常见方法&#xff1a; 方法一&#xff1a;使用 Selenium 一、环境准备&#xff1a; 安装 selenium 库&#xff1a;在命令行中运行 pip install selenium。下载浏览器驱动&#xff1a;如 ChromeDriver&#xff08;确…

Linux系统程序设计--2. 文件I/O

文件I/O 标准C的I/O FILE结构体 下面只列出了5个成员 可以观察到&#xff0c;有些函数没有FILE类型的结构体指针例如printf主要是一些标准输出&#xff0c;因为其内部用到了stdin&#xff0c;stdout&#xff0c;stderr查找文件所在的位置:find \ -name stat.h查找头文件所…

Spark 中 RDD 的诞生:原理、操作与分区规则

Spark 的介绍与搭建&#xff1a;从理论到实践-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交&#xff1a;本地与集群模式全解析-CSDN博客 Spark on YARN&#xff1a;Spark集群模式之Yarn模式的原…

[2024最新] macOS 发起 Bilibili 直播(不使用 OBS)

文章目录 1、B站账号 主播认证2、开启直播3、直播设置添加素材、隐私设置指定窗口添加/删除 窗口 4、其它说明官方直播帮助中心直播工具教程 目前搜到的 macOS 直播教程都比较古早&#xff0c;大部分都使用 OBS&#xff0c;一番探索下来&#xff0c;发现目前已经不需要 OBS了&a…

内核设备树,你真的了解吗?

在嵌入式系统和内核开发中&#xff0c;设备树&#xff08;Device Tree, 简称 DT&#xff09;扮演着至关重要的角色&#xff0c;帮助系统在启动时准确识别硬件配置并匹配合适的驱动程序。虽然设备树应用广泛&#xff0c;但其结构、工作机制及应用细节却不总是被深入理解。本文将…

yelp数据集上识别潜在的热门商家

yelp数据集是研究B2C业态的一个很好的数据集&#xff0c;要识别潜在的热门商家是一个多维度的分析过程&#xff0c;涉及用户行为、商家特征和社区结构等多个因素。从yelp数据集里我们可以挖掘到下面信息有助于识别热门商家 用户评分和评论分析 评分均值: 商家的平均评分是反映其…

Mac如何将多个pdf文件归并到一个

电脑&#xff1a;MacBook Pro M1 操作方式&#xff1a; very easy 选中想要归并的所有pdf文件&#xff0c;然后 右键 -> quick actions -> Create PDF 然后就可以看到将所选pdf文件归并为一个pdf的文件了

华为eNSP实验:IP Source Guard

一&#xff1a;IP Source Guard: IP Source Guard&#xff08;简称IPSG&#xff09;是一种基于二层接口的源IP地址过滤技术&#xff0c;用于防止恶意主机伪造合法主机的IP地址进行网络攻击。以下是对IP Source Guard的详细解析&#xff1a; 基本概念&#xff1a; IP Source Gu…

API接口精准获取商品详情信息案例

在当今数字化时代&#xff0c;电子商务平台的蓬勃发展&#xff0c;使得商品信息的获取变得尤为重要。API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;作为连接前端用户界面与后端服务的桥梁&#xff0c;扮演着至关重要的角色。本文…

比流计算资源效率最高提升 1000 倍,“增量计算”新模式能否颠覆数据分析?

作者 | 关涛 云器科技CTO 数据平台领域发展 20 年&#xff0c;逐渐成为每个企业的基础设施。作为一个进入“普惠期”的领域&#xff0c;当下的架构已经完美了吗&#xff0c;主要问题和挑战是什么&#xff1f;在 2023 年 AI 跃变式爆发的大背景下&#xff0c;数据平台又该如何演…

牧神记开分9.7,2024新国漫巅峰出现了

现在国漫越来越卷了&#xff0c;卷播放量也卷评分。最近&#xff0c;b站上线不久的国漫《牧神记》开分9.7&#xff0c;口碑还是相当不错的&#xff0c;已经和《凡人修仙传》评分齐平。这部国漫仅仅播出4集&#xff0c;为什么就能获得这么高的评分呢&#xff1f;下面就一起来看看…

MeterSphere接口自动化-ForEach循环

接口自动化场景&#xff1a;一个接口根据不同的参数取值来运行测试&#xff0c;本场景中只有一个参数来去不同值。举例如下&#xff1a; https:://test.csdn/query?placementList1接口&#xff0c;测试id1,2,3时&#xff0c;断言接口返回的data数据都有返回。&#xff08;当然…

ServletContext介绍

文章目录 1、ServletContext对象介绍1_方法介绍2_用例分析 2、ServletContainerInitializer1_整体结构2_工作原理3_使用案例 3、Spring案例源码分析1_注册DispatcherServlet2_注册配置类3_SpringServletContainerInitializer 4_总结 ServletContext 表示上下文对象&#xff0c;…

聚观早报 | 比亚迪腾势D9登陆泰国;苹果 iOS 18.2 将发布

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 11月5日消息 比亚迪腾势D9登陆泰国 苹果 iOS 18.2 将发布 真我GT7 Pro防尘防水细节 小米15 Ultra最快明年登场 …

【Linux系统编程】第四十四弹---从TID到线程封装:全面掌握线程管理的核心技巧

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、tid是什么 1.1、理解库 1.2、理解tid 1.3、tid中线程局部存储 2、封装线程 2.1、基本结构 2.2、函数实现 2.3、使用…