HarmonyOs开发之——TypeScript介绍、入门,及 TypeScript、JavaScript、ArkTs的具体区别解读。

一、 开发语言介绍:

TypeScript是JavaScript的超集,ArkTS则是TypeScript的超集。ArkTs是 HarmonyOs的主力开发语言,它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。
  • JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
  • TypeScript 是 JavaScript 的一个超集,它扩展了 JavaScript 的语法,通过在JavaScript的基础上添加静态类型定义构建而成,是一个开源的编程语言。
  • ArkTS兼容TypeScript语言,拓展了声明式UI、状态管理、并发任务等能力。
1、ArkTS基础类型:
  • let isSelect:boolean = false;  布尔值
  • let count:number = 2222; //0b9897989、0o45646、9x7e8   数字
  • let name:string = "limeimei"  字符串
  • let list:number[] = [1,2,1] 数组
  • let list:Array<number>=[1,2,1] 泛型数组
  • enum Color{r,g,b};  let c:Color = Color.Green;  枚举
  • function main():void{ ... }  函数
2、类:TypeScript支持基于类的面向对象的编程方式,定义类的关键字为 class,后面紧跟类名。类描述了所创建的对象共同的属性和方法。
A、类的定义

声明一个Person类,这个类有3个成员:一个是属性(包含name和age),一个是构造函数,一个是getPersonInfo方法,其定义如下所示。

class Person {private name: stringprivate age: numberconstructor(name: string, age: number) {this.name = name;this.age = age;}public getPersonInfo(): string {return `My name is ${this.name} and age is ${this.age}`;}
}

通过上面的Person类,我们可以定义一个人物Jacky并获取他的基本信息,其定义如下:

let person1 = new Person('Jacky', 18);
person1.getPersonInfo();

B、继承

继承就是子类继承父类的特征和行为,使得子类具有父类相同的行为。TypeScript中允许使用继承来扩展现有的类,对应的关键字为extends。

class Employee extends Person {private department: stringconstructor(name: string, age: number, department: string) {super(name, age);this.department = department;}public getEmployeeInfo(): string {return this.getPersonInfo() + ` and work in ${this.department}`;}
}

通过上面的Employee类,我们可以定义一个人物Tom,这里可以获取他的基本信息,也可以获取他的雇主信息,其定义如下:

et person2 = new Employee('Tom', 28, 'HuaWei');
person2.getPersonInfo();
person2.getEmployeeInfo();

在TypeScript中,有public、private、protected修饰符,其功能和具体使用场景大家可以参考TypeScript的相关学习资料,进行拓展学习。

C、模块

随着应用越来越大,通常要将代码拆分成多个文件,即所谓的模块(module)。模块可以相互加载,并可以使用特殊的指令 export 和 import 来交换功能,从另一个模块调用一个模块的函数。

两个模块之间的关系是通过在文件级别上使用 import 和 export 建立的。模块里面的变量、函数和类等在模块外部是不可见的,除非明确地使用 export 导出它们。类似地,我们必须通过 import 导入其他模块导出的变量、函数、类等。

导出

任何声明(比如变量,函数,类,类型别名或接口)都能够通过添加export关键字来导出,例如我们要把NewsData这个类导出,代码示意如下:

export class NewsData {title: string;content: string;imagesUrl: Array<NewsFile>;source: string;constructor(title: string, content: string, imagesUrl: Array<NewsFile>, source: string) {this.title = title;this.content = content;this.imagesUrl = imagesUrl;this.source = source;}
}

导入

模块的导入操作与导出一样简单。 可以使用以下 import形式之一来导入其它模块中的导出内容。

import { NewsData } from '../common/bean/NewsData';
D、迭代器:当一个对象实现了Symbol.iterator属性时,我们认为它是可迭代的。一些内置的类型如Array,Map,Set,String,Int32Array,Uint32Array等都具有可迭代性。
E、for..of 语句:会遍历可迭代的对象,调用对象上的Symbol.iterator方法。 下面是在数组上使用for..of的简单例子:
let someArray = [1, "string", false];for (let entry of someArray) {console.log(entry); // 1, "string", false}
F、for..of vs. for..in 语句:均可迭代一个列表,但是用于迭代的值却不同:for..in迭代的是对象的键,而for..of则迭代的是对象的值。
let list = [4, 5, 6];for (let i in list) {console.log(i); // "0", "1", "2",
}for (let i of list) {console.log(i); // "4", "5", "6"
}

一、TypeScript、JavaScript、ArkTs的具体区别

TypeScript、JavaScript 和 ArkTS 是三种不同的编程语言,它们之间有明显的区别和联系。下面将详细地描述它们的区别:
 
1、JavaScript:是一种高级的、解释执行的编程语言,主要用于网页开发。它的设计目的是为了在网页浏览器中运行,控制网页的行为。JavaScript 是一种动态类型语言,这意味着在运行时可以改变变量的类型。它具有单线程执行模型,意味着一次只能执行一个任务,这是它设计时的限制。
  • 动态类型系统:变量在运行时可以改变类型。
  • 单线程执行:一次只能执行一个任务。
  • 基础功能:包括控制 DOM、处理事件、执行异步操作等。
2、TypeScript:TypeScript 是 JavaScript 的一个超集,由 Microsoft 开发。它在 JavaScript 的基础上增加了静态类型系统,这意味着在编译时就能检查类型错误,提高了代码的稳定性和可维护性。TypeScript 代码需要被编译成 JavaScript 才能在浏览器或 Node.js 中运行。
  • 静态类型系统:变量类型在编译时确定,可以提供更早的错误检查。
  • 编译为 JavaScript:TypeScript 代码最终会被编译成 JavaScript。
  • 扩展 JavaScript:添加了类、接口、枚举等结构化编程特性。
3、ArkTS:ArkTS 是专为鸿蒙OS(HarmonyOS)设计的全场景应用开发语言。它在 TypeScript 的基础上进一步扩展,增加了声明式UI、状态管理等特性,以支持鸿蒙OS的组件化开发。ArkTS 也支持一次开发,多端部署,意味着在一个平台上编写代码后,可以部署到不同的设备端。
  • 声明式UI:以声明的方式定义用户界面,使代码更简洁、易维护。
  • 状态管理:提供组件状态、数据共享等机制,方便处理复杂应用状态。
  • 组件化开发:支持组件化、可配置的开发,降低开发难度,提高开发效率。
  • 与 JavaScript/TypeScript 的兼容性:作为 TypeScript 的超集,ArkTS 兼容 JavaScript 和 TypeScript 的代码和库。
     
总结:
JavaScript 是基础,广泛用于网页和前端开发。
TypeScript 是 JavaScript 的超集,增加了静态类型检查,适合大型项目和团队协作。
ArkTS** 是 TypeScript 的超集,专为鸿蒙OS设计,支持组件化、声明式UI和状态管理等特性,适用于鸿蒙OS的全场景应用开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87021.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87021.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/87021.shtml

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

相关文章

《JMS事务性会话彻底解析:消息监听中的 commit、rollback 和幂等设计》

大家好&#xff0c;我是G探险者&#xff01; &#x1f4cc; 场景引入 在实际项目中&#xff0c;我们常常面临以下挑战&#xff1a; 监听 MQ 消息失败了&#xff0c;希望自动重试&#xff1f;消费 MQ 消息后&#xff0c;要写数据库&#xff0c;但中间报错了&#xff1f;消息处…

vue3 el-table 列增加 自定义排序逻辑

在 Vue 3 中使用 Element Plus 的 <el-table> 组件时&#xff0c;如果你想增加自定义排序逻辑&#xff0c;可以通过以下几个步骤实现&#xff1a; 1. 使用 default-sort 属性 首先&#xff0c;你可以在 <el-table> 组件上使用 default-sort 属性来指定默认的排序…

ISP Pipeline(7): Gamma Correction 伽马校正

AI_Plays/ISP/Fast_ISP_Progress.ipynb at main ameengee/AI_Plays GitHub Gamma Correction&#xff08;伽马校正&#xff09;是图像处理中的一个重要步骤&#xff0c;目的是调整图像的亮度&#xff0c;使其更符合人眼的感知或显示设备的特性。 为什么需要 Gamma Correcti…

AI提取伴奏,实现卡拉OK效果 —— 「suno api/luno api/kuka api」

导读 喜欢唱歌&#xff0c;却总苦于找不到纯净的伴奏&#xff1f;或者你想把喜欢的歌曲翻唱一遍&#xff0c;却被人声干扰搞得头大&#xff1f;现在&#xff0c;AI技术已经悄悄解决了这个问题。借助AI智能工具&#xff0c;你可以轻松提取任何一首歌的伴奏&#xff0c;享受宛如…

pip介绍

pip是什么&#xff1f; pip&#xff08;Pip Installs Packages&#xff09;是Python的官方管理工具&#xff0c;用于安装、升级、卸载和管理Python第三方库及其依赖关系。它是Python生态系统的核心组件&#xff0c;通过连接PyPI&#xff08;Python Package Index&#xff09;这…

机器学习20-线性网络思考

机器学习20-线性网络思考 针对线性网络的基础问题&#xff0c;使用基础示例进行解释 1-核心知识点 1-线性模型家族的线性回归和逻辑回归分别是什么&#xff0c;线性模型家族还有没有其他的模型 线性模型家族是一系列基于线性假设的统计模型&#xff0c;它们假设因变量和自变量…

【科研绘图系列】R语言绘制世界地图分布(world map)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理准备画图画图总结系统信息介绍 本教程旨在通过R语言及其相关地理空间分析包,展示如何对环境数据进行空间聚类分析,并将结果可视化。教程从读…

Armbian 25.5.1 Noble Gnome 开启远程桌面功能

sudo apt install gnome-remote-desktop ----长话短说 故障表现 Ubuntu 25版本点击远程桌面功能没有任何反应, WIN_20250630_00_53_24_Pro 最后 armbian 官方社区充满了傲慢,一言不合就关闭话题,问题都没有解决就给我关闭了 最后检索到英文网站,说到了这么一句话,检查远程桌…

嵌入式 Linux 入门:从裸机到系统级开发的第一步

随着嵌入式系统应用的不断深入&#xff0c;很多 MCU 项目开发者会在某个阶段遇到瓶颈&#xff1a;系统越来越复杂、任务越来越多、通信越来越频繁、性能要求越来越高。 这时候&#xff0c;从 MCU / RTOS 过渡到 嵌入式 Linux 开发 就成为一次技术升级的关键转折点。 本文将带…

详解 Blazor 组件传值

父子组件传值 在 Blazor 中&#xff0c;组件之间的通信可以通过 [Parameter] 参数和 EventCallback<T> 事件回调实现。下面分别给出 父组件传递值给子组件 和 子组件传递值给父组件 的简单示例。 1.1 父组件传递值给子组件 步骤&#xff1a; 在子组件中定义 public 属…

力扣热题100再刷

160.相交链表 读一遍A&#xff0c;一个set存节点&#xff0c;遍历B的时候判断即可。复习下set的STL&#xff1a;set有set和unordered_set&#xff0c;同样有insert&#xff0c;find&#xff0c;count&#xff0c;对于set而言&#xff0c;自动从小到大排序&#xff0c;还有&…

MySQL常用函数性能优化及索引影响分析

MySQL 常用函数性能优化指南&#xff08;含索引影响分析&#xff09; 以下是 MySQL 函数使用指南&#xff0c;新增性能影响评级、索引失效分析和优化方案&#xff0c;帮助您高效使用函数&#xff1a; &#x1f4dc; 一、字符串处理函数&#xff08;含性能分析&#xff09; 函…

莫队(基础版)优雅的暴力

莫队算法是一种离线算法&#xff0c;常用于高效处理区间查询问题。它通过合理排序和移动左右端点来减少时间复杂度。 基本思想 莫队算法的核心思想是将所有查询离线排序&#xff01;&#xff01;&#xff08;找出一个过起来最快的查询顺序&#xff09;&#xff0c;然后通过移动…

✨ Python 高级定制 | 美化 Word 表格边框与样式(收货记录增强版)

之前我们完成了 Excel 数据提取、Word 表格写入与合并&#xff0c;现在继续 为 Word 表格添加高级样式 装扮&#xff0c;包括单元格边框、背景填色、居中对齐、粗体、高亮行/列等&#xff0c;进一步增强表格的可读性与专业性。 &#x1f58c;️ 样式设置函数 1. 设置单元格边框…

Clickhouse源码分析-TTL执行流程

第一种情况&#xff1a;无ttl_only_drop_parts配置 总体示例以及说明 如果没有ttl_only_drop_parts的配置&#xff0c;过期数据的删除&#xff08;这里是删除&#xff0c;是将过期的数据从这个part删除&#xff0c;并将过期的数据构成一个part&#xff0c;这个过期的part标记…

elementui修改radio字体的颜色和圆圈的样式

改完 <div class"choose"><el-radio-group v-model"radioNum"><el-radio label"1" size"large">Option 1</el-radio><el-radio label"2" size"large">Option 2</el-radio>&l…

力扣3381. 长度可被 K 整除的子数组的最大元素和

由于数据范围是2*10^5所以必然是遍历一次&#xff0c;子数组必定要用到前缀和&#xff0c;之前的题目中总是遇到的是子数组的和能不能被k整除&#xff0c;而这里不一样的是子数组的长度能不能被k整除&#xff0c;如果单纯的枚举长度必定超时&#xff0c;而看看题解得出的思路&a…

基于SSM的勤工助学系统的设计与实现

第1章 摘要 基于SSM框架的勤工助学系统旨在为学生、用工部门和管理员提供高效便捷的管理平台。系统包括学生端、用工部门端和管理员端&#xff0c;涵盖了从岗位发布、申请审核、工时记录、薪资管理到数据统计等完整的功能需求。 学生可以通过系统首页浏览最新的岗位信息和公告&…

2025年06月30日Github流行趋势

项目名称&#xff1a;twenty 项目地址 URL&#xff1a;https://github.com/twentyhq/twenty项目语言&#xff1a;TypeScript历史 star 数&#xff1a;31,774今日 star 数&#xff1a;1,002项目维护者&#xff1a;charlesBochet, lucasbordeau, FelixMalfait, Weiko, bosiraphae…

creo 2.0学习笔记

Creo软件从入门到精通——杜书森 1.1 Creo基本建模过程介绍 新建-零件-改名称-取消使用默认模板&#xff0c;是因为默认的是英制尺寸&#xff0c;自定义可选择mmns_part_solid&#xff0c;模板主要是设置模型的单位拉伸-选取FRONT-点击草绘视图&#xff0c;可进行草绘旋转——…