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

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.mzph.cn/news/239184.shtml

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

相关文章

Python: 函数参数是值传递还是引用传递

是引用传递。 Python的设计哲学是一切皆对象&#xff0c;不仅体现在内置数据类型、数据结构是对象&#xff0c;还包括Python编译运行需要的一些设施&#xff0c;比如stackframe、traceback等等。所以&#xff0c;为了更方便的传递数据&#xff0c;cpython内部全部采用指针传递…

共享类数据——class data share功能

CDS 前言定义创建归档文件创建基本归档文件使用归档文件注意事项 源码中体现 前言 现在系统原来越复杂&#xff0c;代码越来越多&#xff0c;启动程序需要加载大量的class文件&#xff0c;这样大量时间都耗在系统启动上。GraalVM原生镜像和Project CRaC都允许Spring Boot应用程…

用指针查找子串

本题要求实现一个字符串查找的简单函数。 函数接口定义&#xff1a; char *search( char *s, char *t ); 函数search在字符串s中查找子串t&#xff0c;返回子串t在s中的首地址。若未找到&#xff0c;则返回NULL。 裁判测试程序样例&#xff1a; #include <stdio.h> #…

React中也许你会用到的Context

文章概叙 本文主要是写React中Context的概念以及使用&#xff0c;请一定搞清楚什么时候使用Context Context的介绍 通常来说&#xff0c;你会通过 props 将信息从父组件传递到子组件。但是&#xff0c;如果你必须通过许多中间组件向下传递 props&#xff0c;或是在你应用中的…

OCC:第一个程序,对话框中显示一个BOX

1. OCC库的获取 从github上获取 gitgithub.com:tpaviot/oce.git&#xff0c;自己编译官网获取二进制包&#xff08;获取下来的只有release 版本的&#xff0c;而且VS版本不一定适合自己&#xff09;官网源码&#xff0c;然后自己编译&#xff08;稍微折腾点&#xff0c;建议按…

自动导入组件unplugin-auto-import和unplugin-vue-components

背景 当我们在Vue项目中使用第三方库或组件时&#xff0c;通常需要手动导入它们并在需要的地方进行注册。这可能会变得繁琐和冗长&#xff0c;特别是当我们使用大量的第三方库或组件时。为了简化这个过程&#xff0c;我们可以使用unplugin-auto-import和unplugin-vue-componen…

阻塞 IO(BIO)

文章目录 阻塞 IO(BIO)模型等待队列头init_waitqueue_headDECLARE_WAIT_QUEUE_HEAD 等待队列项使用方法驱动程序应用程序模块使用参考 阻塞 IO(BIO) 模型 等待队列是内核实现阻塞和唤醒的内核机制。 等待队列以循环链表为基础结构&#xff0c;链表头和链表项分别为等待队列头和…

java继承

访问权限 Java 中有三个访问权限修饰符: private、protected 以及 public&#xff0c;如果不加访问修饰符&#xff0c;表示包级可见。 可以对类或类中的成员(字段以及方法)加上访问修饰符。 类可见表示其它类可以用这个类创建实例对象。成员可见表示其它类可以用这个类的实例…

深入了解UI标签栏设计细节:你不能错过的要点

UI 标签栏的作用有哪些&#xff1f; 导航是移动 UI 中最常见的组成部分&#xff0c;通常放置在 UI 标签栏上&#xff0c;以帮助我们在不同的页面之间切换。UI 标签栏可以保持界面的可控性&#xff0c;并提高可用性。简而言之&#xff0c;UI 标签栏可以加强交互&#xff0c;让用…

轻量Http客户端工具VSCode和IDEA

文章目录 前言Visual Studio Code 的插件 REST Client编写第一个案例进阶&#xff0c;设置变量进阶&#xff0c;设置Token 前言 作为一个WEB工程师&#xff0c;在日常的使用过程中&#xff0c;HTTP请求是必不可少的。我们采用的HTTP工具有如下&#xff1a; Postman Insomnia Ap…

Java 多线程之并行流(parallelStream)

文章目录 一、概述二、使用方法2.1 parallelStream 使用2.2 Stream 方法介绍2.3 简单示例 三、应用示例3.1 示例介绍3.2 简单任务测试结果3.3 复杂任务测试结果3.4 结论 四、完整示例 一、概述 并行流是Java中Stream API的一部分&#xff0c;用于在多核处理器上并行执行流操作。…

综述 2022-Egyptian Informatics Journal:电子健康记录的安全和隐私

Keshta, Ismail, and Ammar Odeh. "Security and privacy of electronic health records: Concerns and challenges." Egyptian Informatics Journal 22.2 (2021): 177-183. https://doi.org/10.1016/j.eij.2020.07.003 被引次数&#xff1a;207 IF 5.2 / JCR Q2

CSS3多列分页属性

CSS3多列 Firefox浏览器支持该属性的形式是-moz-column-count&#xff0c;而基于Webkit的浏览器&#xff0c;例如Safari和Chrome&#xff0c;支持该属性的形式是-webkit-column-count column-count&#xff1a;该属性定义多列文本流中的栏数 语法&#xff1a;column-count:int…

YACS(上海计算机学会竞赛平台)三星级挑战——两数之和

题目描述 给定 n 个整数 a[1]​,a[2]​,⋯,a[n]​&#xff0c;并且保证 a[1​]≤a[2​]≤⋯≤a[n]​ 再给定一个目标值 t&#xff0c;请判断能否找到 a[i]​ 与 a[j]​&#xff0c;ai​aj​t 且 i≠j。 输入格式 第一行&#xff1a;单个整数n&#xff1b; 第二行&#xf…

智能优化算法应用:基于卷尾猴算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于卷尾猴算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于卷尾猴算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.卷尾猴算法4.实验参数设定5.算法结果6.参考文…

C++ 函数重载、操作符重载

依然是温故而知新&#xff0c;不过现在更多的是以此为乐的心态啦。本篇通过代码实例&#xff0c;展示c函数重载相关知识&#xff0c;包括构造函数的重载、操作符重载等。 在构造函数重载中&#xff0c;给大家带来点稍微提升的用法&#xff0c; 看了不吃亏&#xff0c;看了不上当…

如何快速实现地源热泵远程监控

地源热泵远程监控解决方案 一、项目背景 山东省潍坊市盛世花园小区地源热泵项目是一个先进的供暖与制冷系统&#xff0c;旨在为整个小区提供高效且节能的温控服务。该系统主要由地下管道网络、地源热泵单元以及室内分配系统组成。 针对现有的地源热泵系统的管理和监控问题&a…

110基于matlab的混合方法组合的极限学习机和稀疏表示进行分类

基于matlab的混合方法组合的极限学习机和稀疏表示进行分类。通过将极限学习机&#xff08;ELM&#xff09;和稀疏表示&#xff08;SRC&#xff09;结合到统一框架中&#xff0c;混合分类器具有快速测试&#xff08;ELM的优点&#xff09;的优点&#xff0c;且显示出显着的分类精…

【NAM】《NAM:Normalization-based Attention Module》

NeurIPS-2021 workshop 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method5 Experiments5.1 Datasets and Metrics5.2 Experiments 6 Conclusion&#xff08;own&#xff09; 1 Background and Motivation 注意力机制是近些年视觉领域…

栈与队列part01-算法

栈与队列 今日任务&#xff1a; ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈 1.232.用栈实现队列 232. 用栈实现队列 class MyQueue {//使用两个栈实现先入先出队列//定义两个Stack集合//就已经拥有了这个集合的方法了push pop peek isEmpty等等//但是我们这里是…