鸿蒙ArkTS语言介绍与TS基础语法

news2025/2/5 4:46:27

1、ArkTS介绍

ArkTS是HarmonyOS主力应用开发语言,它在TS基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等响应的能力,让开发者以更简洁、更自然的方式开发跨端应用。
在这里插入图片描述

JS 是一种属于网络的高级脚本语言,已经被广泛用于web应用开发,常用来为网页天津各式各样的动态功能,为用户提供更流畅美观的浏览效果。
TS是JS的一个超集,它扩展了JS的语法,通过在JS的基础上添加静态类型定义构建而成,是一个开源的编程语言。
ArkTS基于TS语言,拓展了声明式UI、状态管理、并发任务等能力。
因此:在研究ArkTS之前,需要具备JS和TS的基础知识,才会更加快速的掌握ArkTS,进行鸿蒙应用的开发。

2、TS基础语法:基础类型

2.1、布尔类型

TS中可以使用boolean来表示这个变量是布尔值,可以赋值为true或者false

let b:boolean = false;

2.2、数字类型

TS中所有的数字都是浮点数,可以使用number表示,除了十进制,还有支持二进制、八进制、十六进制。

let a:number = 2023;
let b:number = 0b11001100;
let c:number = 0o3757;
let d:number = 0xae98;

2.3、字符串类型

TS中使用string表示文本数据类型,可以使用双引号或单引号表示字符串。

let name:string = "qubo";
name = "qu";
name = "bo";

2.4、数组类型

TS支持两种方式声明数组:
第一种:可以在元素类型后面接着书写[ ] ,表示由此类型元素组成的一个数组;
第二种:使用数组泛型,Array<元素类型>

let ages:[] = [17,18,19,20];
let names:Arrya<string> = ["张无忌","赵敏","周芷若","小昭"];

2.5、元组类型

元组类型允许表示一个已知元素数量和类型的数组,各个元素类型不一定相同。

let x:[string,number];
x = ["张无忌",20];  // 没有问题
x = [18,'赵敏'];   // 编译时报错

2.6、枚举类型

enum类型是对JS标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字。

enum Color {Red,Green,Blue};
let c:Color = Color.Blue;

2.7、unknown类型

有时候,我们会想要为那些在编程阶段还不确定类型的变量指定一个类型,那么可以使用unknown类型进行标记。

let s:unknown = 123;
s = "abc";
s = true;
// 以上操作都是正确的

2.8、void类型

当一个函数没有返回值时,通过会使用void作为返回值类型进行标记。

function demo():void{
	consoloe.log("void 表示函数不返回任何数据");
}

2.9、null和undefined类型

TS中,undefined和null两者各自有自己的类型分别是undefined和null。

let a:undefined = undefined;
let b:null = null;

2.10、联合类型

联合类型表示取值可以为多种类型中的一种。

let a:string|number;
a = "陕西";
a = 610;

3、条件语句

条件语句用于基于不同的条件来执行不同的动作,ts条件语句通过一条或者多条语句的执行结果(true或false)来决定执行的代码块。

3.1、if语句

let num:number = 10;
if(num > 0){
	console.log("正数");
}

3.2、if else语句

let num:number = 10;
if(num % 2 == 0){
	console.log("偶数");
}else{
	console.log("奇数");
}

3.3、if-else if else语句

let num:number = 10;
if(num > 0){
	console.log("正数");
}else if(num < 0){
	console.log("负数");
}else{
	console.log("零");
}

3.4、switch语句

一个switch语句用于一个变量可能等于多个值时,通过不同的case值,进行每个可能值的检测,并执行对应的代码。

let score:number = 90;
switch(parseInt(score / 10)){
	case 10:
	case 9:
		console.log("优");
		break;
	case 8:
		console.log("良");
		break;
	case 7:
		console.log("中");
		break;
	case 6:
		console.log("差");
		break;
	default:
		console.log("不及格");
		break;	
}

4、函数定义

函数是一组一起执行的任务语句,函数声明要告诉编译器函数的名称、返回值类型和参数。TS创建函数有两种情况:有名称函数和匿名函数

4.1、有名称函数

// 有名称函数:给列表设置为number类型
function add(a:number , b:number):number{
	return a + b;
}

4.2、匿名函数

// 匿名函数:给列表设置为number类型
let add = function(a:number , b:number):number{
	return a + b;
}

4.3、可选参数

在TS中可以在参数旁边使用?实现可选参数。

// lastName:可选参数,调用时可以传递,也可以不传递
function buildName(firstName:string,lastName?:string):string{
	if(lastName){
		return firstName + "-" + lastName;
	}else{
		return firstName;
	}
}
console.log( buildName("赵","四") );
console.log( buildName("赵") );

4.4、剩余参数

剩余参数会被当作个数不限的可选参数。调用时可以传递数据,也可以不传递,还可以传递很多个数据。使用省略号进行定义

function add(a:number,b:number,...rest:number[]):number{
	let sum = a + b;
	if(rest){
		for(let i = 0 ; i < rest.length; i++){
			sum+=rest[i];
		}
	}
	return sum;
}
console.log( add(1,2,3,4,5,6,7) );
console.log( add(1,2,3) );
console.log( add(1,2) );

4.5、箭头函数

ES6版本提供建通函数,它是定义匿名函数的简写形式,用于函数表达式,它省略function关键字。

([param1,param2,...,param n])=>{
	// 代码块
}

其中括号内是函数的入参,可以有0到多个参数,箭头后是函数体的代码块。也可以将这个箭头函数赋值给一个变量

let func = ([param1,param2,...,param n])=>{
	// 代码块
}

5、类

5.1、定义类

TS支持基于类的面向对象的编程方式,定义类的关键字为 class,后面紧跟类名。类描述了所创建的对象共同的属性和方法。

// 定义类
class Person{
	private name:string;
	private age:number;
	constructor(name:string,age:number){
		this.name = name;
		this.age = age;
	}
	public getPersonInfo():string{
		return `name=${this.name},age=${this.age}`;
	}
}
// 创建类的对象
let p1 = new Person("灭绝师太",100);
p1.getPersonInfo();

可以使用private、public、static、protected等修饰符对类中的成员进行修饰。用于参考TS类的官方文档。

5.2、继承

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

// 定义类
class Emp extends Person{
	private dept:string;
	constructor(name:string,age:number,dept:string){
		super(name,age);
		this.dept = dept;
	}
	public getEmpInfo():string{
		return this.getPersonInfo()+`,dept=${this.dept}`;
	}
}
// 创建类的对象
let e1= new Emp ("金毛狮王",20,"保安部");
e1.getEmpInfo();

针对类,除了继承,还有抽象类,与接口的概念。后续课程中用到了还会继续介绍。

6、模块

随着应用越来越大,通常要将代码拆分成多个文件,即所谓的模块 (module) 。模块可以相互加载并可以使用特殊的指令 export 和 import 来交换功能,从另一个模块调用一个模块的函数。
两个模块之间的关系是通过在文件级别上使用 import 和 export 建立的。模块里面的变量、函数和类等在模块外部是不可见的,除非明确地使用 export 导出它们。类似地,我们必须通过 import 导入其他模块导出的变量、函数、类等

// 导出这个类
export class NewsData{
	title:string;
	content:string;
	constructor(title:string,content:string){
		this.title = title;
		this.content = content;
	}
}
// 导入已经存在的类
import {NewsData} from '../pojo/NewsData';

7、迭代器

当一个对象实现了Symbol.iterator属性时,我们认为它是可迭代的。一些内置的类型如Array,Map,Set,String,Int32Array,Uint32Array等都具有可迭代性。

// for of语句
let arr = [11,22,33,44];
for(let x of arr){
	console.log(x);
}
// for in 语句
let items = ["aaa","bbb","ccc","ddd"];
for(let i in items){
	console.log(i); // 这里的i是数组的下标,并不是数组中的元素
}
//
for(let i of items){
	console.log(i); // 这里的i是数组中的元素
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

02-基于GEC6818开发板的画正方形、画圆的操作——使用mmap映射提高效率

02-基于GEC6818开发板的画正方形、画圆的操作——使用mmap映射提高效率 本文主要是在01-基于粤嵌GEC6818实现屏幕的显示固定颜色进行自动切换-点击前往的基础上进行了进一步的更改&#xff0c;之前那个在切换时会有一定的花屏&#xff0c;是因为其效率低的原因&#xff0c;本文…

猜数字游戏 C语言xdoj490

问题描述 猜数字游戏是令游戏机随机产生一个 100 以内的正整数&#xff0c;用户输入一个数对其进行猜测&#xff0c;需要你编写程序自动对其与随机产生的被猜数进行比较&#xff0c;并提示大了&#xff08;“Too big”&#xff09;&#xff0c;还是小了&#xff08;“Too smal…

GBASE南大通用数据库提供的高可用负载均衡功能

GBASE南大通用GBase 8a ODBC 提供的高可用负载均衡功能是指&#xff0c;GBase 8a ODBC 会将客户 端请求的数据库集群连接平均分摊到集群所有可用的节点上。 GBASE南大通用数据库负载均衡的使用方法 GBASE南大通用GBase 8a ODBC 提供两种方式来使用高可用负载均衡。一种是配置数…

Ubuntu 20.4镜像国内地址下载较快

Ubuntu20.04版本比较稳定&#xff0c;部署OJ大都用这个版本。 推荐阿里云镜像点&#xff0c;点进去根据你的电脑版本下载iso后缀那个 ubuntu-releases-20.04安装包下载_开源镜像站-阿里云 下载速度较快 其他版本 http://mirrors.aliyun.com/ubuntu-releases/ 如果使用云服务…

图像畸变校正解决方案,无畸变的高质量视觉体验

摄像头已经成为我们生活中不可或缺的一部分。然而&#xff0c;由于摄像头的物理特性和环境因素&#xff0c;采集到的图像往往存在径向和切向畸变&#xff0c;导致画面扭曲&#xff0c;影响视觉效果。为了解决这个问题&#xff0c;美摄科技推出了一款先进的图像畸变校正解决方案…

Java网络编程---UDP

客户端 import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner;public class Client {public static void main(String[] args) throws Exception {//1.创建客户端对象DatagramSocket socket new Datagra…

node实现简单的数据爬虫

前言 我使用的是墨迹天气的页面&#xff0c;因为这个使用的链接简单 页面结构简单并且大都是文字形式 第一步 打开墨迹天气网址 随便点开一个页面 点击F12或者鼠标右键点击检查 查看页面的信息 分析页面内容 使用文字所在的class和标签来定位 编写代码 配置express环境 …

vscode中vue项目报错

当在vscode中写代码时&#xff0c;报错报错报错......... 已经头大&#xff0c;还没写就报错&#xff0c; 这是因为eslint对语法的要求太过严格导致的编译时&#xff0c;出现各种语法格式错误 我们打开vue.config.js&#xff0c;加上这句代码&#xff0c;就OK啦 lintOnSave:…

Python基本数据类型详解,新手小白入门必学

文章目录 1.注释2.输出3.变量4.命名规范5.变量的定义方式1.字符串类型2.数字类型3.List列表类型4.tuple 元组类型的定义5.Dict字典类型6.set集合类型7.数据类型转换8.自动类型转换9.强制类型转换Python技术资源分享1、Python所有方向的学习路线2、学习软件3、入门学习视频4、实…

关于“Python”的核心知识点整理大全35

目录 13.3.4 重构 create_fleet() game_functions.py 13.3.5 添加行 game_functions.py alien_invasion.py 13.4 让外星人群移动 13.4.1 向右移动外星人 settings.py alien.py alien_invasion.py game_functions.py 13.4.2 创建表示外星人移动方向的设置 13.4.3 检…

2023 英特尔On技术创新大会直播 | AI魅力的生活化

目录 前言正文 前言 依稀记得去年的直播大会&#xff0c;主要展现了其灵活、加速和半集成化的独特优势&#xff0c;广泛应用于人工智能、5G通信、边缘计算以及视觉图像处理等领域&#xff0c;不断提供领先的性能、能效和可编程性的创新。 如今又带来一些不一样的特色&#xf…

大一C语言作业题目1

目录 字符串和字符数组&#xff1f; %s found的变化&#xff1a; 7-1 学生成绩录入及查询 学生成绩表中&#xff0c;一名学生的信息包含如下信息&#xff1a; 学号(11位)、姓名、数学成绩、英语成绩、程序设计成绩、物理成绩。 本题要求编写程序&#xff0c;录入N条学生的…

IDEA 设置 SpringBoot logback 彩色日志(附配置文件)

1、背景说明 最开始使用 SpringBoot 时&#xff0c;控制台日志是带彩色的&#xff0c;让人眼前一亮&#x1f604; 后来彩色莫名丢失&#xff0c;由于影响不大&#xff0c;一直没有处理。 2、配置彩色 最近找到了解决方法&#xff08;其实是因为自定义 logback.xml&#xff0…

任天堂,steam游戏机通过type-c给VR投屏与PD快速充电的方案 三type-c口投屏转接器

游戏手柄这个概念&#xff0c;最早要追溯到二十年前玩FC游戏的时候&#xff0c;那时候超级玛丽成为了许多人童年里难忘的回忆&#xff0c;虽然长大了才知道超级玛丽是翻译错误&#xff0c;应该是任天堂的超级马里奥&#xff0c;不过这并不影响大家对他的喜爱。 当时FC家用机手柄…

电容内容介绍

0 Preface/Foreword 电容&#xff0c;Capacitance&#xff0c;i.e. 电容量&#xff0c;指在给定电位差下自由电荷的储存量&#xff0c;符号为C&#xff0c;单位为F&#xff08;法拉&#xff09;。 电容&#xff0c;指容纳电荷的能力。任何静电场都是由许多电容组成&#xff0…

Linux---进程状态

目录 一、系统进程状态介绍 1.运行状态 2.阻塞状态 3.挂起状态 二、Linux中的进程状态 1.R (running) 2.S (sleeping) 3.D&#xff08;disk sleep&#xff09; 4.T&#xff08;stopped&#xff09; 5.t&#xff08;tracing stop&#xff09; 6.X&#xff08;dead&am…

Spring AOP入门指南:轻松掌握面向切面编程的基础知识

面向切面编程 1&#xff0c;AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念 2&#xff0c;AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知类配给…

短剧分销平台搭建,稳占短剧市场

近两年&#xff0c;短剧一时火爆出圈&#xff0c;凭借着跌宕起伏的剧情成为了影视观众的新宠。短剧的剧情非常短&#xff0c;但每一集都能有一个高潮部分&#xff0c;非常吸引大众观看。 为了解锁更多短剧&#xff0c;观众更是对其进行付费充值&#xff0c;甚至还出现了24小时…

Java:打印当前线程的堆栈信息到错误流(error stream)

使用java.lang.Thread的静态方法dumpStack()&#xff0c;可以打印当前线程的堆栈信息到错误流&#xff08;error stream&#xff09;。 代码示例&#xff1a; package com.thb;public class Test5 {public static void main(String[] args) {Thread.dumpStack();}}运行输出&a…

基于SpringBoot的考研专业课程管理系统 JAVA简易版

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高校教师管理模块2.4 考研专业模块2.5 考研政策模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 考研高校表3.2.2 高校教师表3.2.3 考研专业表3.2.4 考研政策表 四、系统展示五、核…