当前位置: 首页 > news >正文

鸿蒙开发学习笔记第一篇--TypeScript基础语法

目录

前言

一、ArkTS

二、基础语法

1.基础类型

1.布尔值

2.数字

3.字符串

4.数组

5.元组

6.枚举

7.unkown

8.void

9.null和undefined

10.联合类型

2.条件语句

1.if语句

1.最简单的if语句

2.if...else语句

3.if...else if....else 语句

2.switch语句

5.函数

6.类

7.模块

1.导出

2.导入

8.迭代器

参考文章:


前言

    记录下HarmonyOS开发学习的过程。

一、ArkTS

        ArkTS是鸿蒙开发的主力语言,我们可以通过下面的一张图,大致了解下ArkTS。

二、基础语法

1.基础类型

1.布尔值

let isDone:boolean = false;

2.数字

        TypeScript中所有的数字都是浮点数,这些浮点数的类型是number。使用number可以表示十进制、二进制、八进制、十六进制。

let decLiteral: number=2023;
let binaryLiteral: number=0b11111100111;let octalLiteral: number= 0o3747;
let hexLiteral: number=0x7e7;
console.log('decLiteral is'+ decLiteral);
console.log('binaryLiteral is'+ binaryLiteral);console.log('octalLiteral is'+ octalLiteral);
console.log("hexLiteral is'+ hexLiteral);

3.字符串

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

let name: string = "Jacky";

name = "Tom";

name = 'Mick';

4.数组

        TypeScript支持两种方式声明数组。

1.元素类型后面加上

let array:number[] = [1,2,3,4];

2.使用泛型

let array:Array<number> = [1,2,3,4];

5.元组

let x:[string,Number]= ['hello',10];

6.枚举

enum Color{Red,Green,Blue}

7.unkown

        有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。那么我们可以使用unknown类型来标记这些变量。

let notSure: unknown = 4;
notSure = 'maybe a string instead';
notSure = false;

8.void

        当一个函数没有返回值时,你通常会见到其返回值类型是 void。

function test(): void {
   console.log('This is function is void');
}

9.null和undefined

        TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。

let u: undefined = undefined;
let n: null = null;

10.联合类型

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

let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;

2.条件语句

1.if语句

        条件语句用于基于不同的条件来执行不同的动作。TypeScript 条件语句是通过一条或多条语句的执行结果(True 或 False)来决定执行的代码块。

1.最简单的if语句
var num:number = 5
if (num > 0) { console.log('数字是正数') 
}
2.if...else语句

        例如下面的例子中,我们可以使用if...else语句判断数字是奇数还是偶数。

var num:number = 12; 
if (num % 2==0) { console.log('偶数'); 
} else {console.log('奇数'); 
}
3.if...else if....else 语句

        if...else if....else 语句用来执行执行多个判断条件。

var num:number = 2 
if(num > 0) { console.log(num+' 是正数') 
} else if(num < 0) { console.log(num+' 是负数') 
} else { console.log(num+' 为0') 
}

2.switch语句

var grade:string = 'A'; 
switch(grade) { case 'A': { console.log('优'); break; } case 'B': { console.log('良'); break; } case 'C': {console.log('及格'); break;    } case 'D': { console.log('不及格'); break; }  default: { console.log('非法输入'); break;              } 
}

5.函数

function add(x:number,y:number){return x + y;
}
let result:number = add(10,20);
console.log("\(x)+\(y)=",result);

6.类

        我们可以定义一个Person类。

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}`;}
}

        类的继承我们使用extend关键字,例如我们还有一个Student类继承自Person类。

class Student extends Person{private studentNO:string;constructor(studentNO:string){super("",12);this.studentNO = studentNO;}
}

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

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

7.模块

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

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

1.导出

        任何声明(比如变量,函数,类,类型别名或接口)都能够通过添加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;}
}

2.导入

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

import { NewsData } from '../common/bean/NewsData';

8.迭代器

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

for..of 语句

for..of会遍历可迭代的对象,调用对象上的Symbol.iterator方法。 下面是在数组上使用for..of的简单例子:

let someArray = [1, "string", false];for (let entry of someArray) {console.log(entry); // 1, "string", false
}

for..of vs. for..in 语句

for..of和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"
}

参考文章:

1.TypeScript的官方教程

2.TypeScript的开发环境

3.鸿蒙官网

相关文章:

鸿蒙开发学习笔记第一篇--TypeScript基础语法

目录 前言 一、ArkTS 二、基础语法 1.基础类型 1.布尔值 2.数字 3.字符串 4.数组 5.元组 6.枚举 7.unkown 8.void 9.null和undefined 10.联合类型 2.条件语句 1.if语句 1.最简单的if语句 2.if...else语句 3.if...else if....else 语句 2.switch语句 5.函数…...

Java基础知识总结(55)

&#xff08;2&#xff09; ArrayList和LinkedList的区别 1、ArrayList和LinkedList都实现了List接口2、ArrayList和LinkedList都是非线程安全的&#xff0c;因此在多线程环境下可能会出现出现不同步的情况3、ArrayList底层实现是数组&#xff0c;LinkedList底层实现是双向链表…...

python爬虫 - 爬取微博热搜数据

文章目录 python爬虫 -爬取微博热搜数据1. 第一步&#xff1a;安装requests库和BeautifulSoup库2. 第二步&#xff1a;获取爬虫所需的header和cookie3. 第三步&#xff1a;获取网页4. 第四步&#xff1a;解析网页5. 第五步&#xff1a;分析得到的信息&#xff0c;简化地址6. 第…...

Pytorch-张量形状操作

&#x1f606;&#x1f606;&#x1f606;感谢大家的观看&#x1f606;&#x1f606; &#x1f339; reshape 函数 transpose 和 permute 函数 view 和 contigous 函数 squeeze 和 unsqueeze 函数 在搭建网络模型时&#xff0c;掌握对张量形状的操作是非常重要的&#xff…...

k8s的service为什么不能ping通?——所有的service都不能ping通吗

点击阅读原文 前提&#xff1a;kube-proxy使用iptables模式 Q service能不能ping通&#xff1f; A: 不能&#xff0c;因为k8s的service禁止了icmp协议 B: 不能&#xff0c;因为clusterIP是一个虚拟IP&#xff0c;只是用于配置netfilter规则&#xff0c;不会实际绑定设备&…...

[Linux] 权限控制命令 chmod、chown和chgrp

文章目录 chmodchownchgrp chmod 在Linux系统中&#xff0c;root用户可以使用chmod命令来修改文件的权限&#xff0c;并且root用户也可以授权普通用户来执行chmod命令。要将权限授予普通用户修改一个文件的权限&#xff0c;可以使用以下步骤&#xff1a; 使用root用户登录到L…...

RNN知识体系构筑:详尽阐述其理论基础、技术架构及其在处理序列数据挑战中的创新应用

一、为什么需要RNN 尽管神经网络被视为一种强大且理论上能够近似任何连续函数的模型&#xff0c;尤其当训练数据充足时&#xff0c;它们能够在输入空间中的某个点( x )映射到输出空间的特定值( y )&#xff0c;然而&#xff0c;这并不能完全解释为何在众多应用场景中&#xff…...

LeetCode 1702.修改后的最大二进制字符串:脑筋急转弯(构造,贪心)

【LetMeFly】1702.修改后的最大二进制字符串&#xff1a;脑筋急转弯&#xff08;构造&#xff0c;贪心&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-binary-string-after-change/ 给你一个二进制字符串 binary &#xff0c;它仅有 0 或者 1 组…...

图片像素轻松缩放自如,支持批量将多张jpg图片像素放大,高效掌握图片的像素

在这个数字化时代&#xff0c;图片已经成为我们生活中不可或缺的一部分。然而&#xff0c;你是否曾遇到过需要放大图片像素却担心失去细节和质量的问题&#xff1f;现在&#xff0c;一款全新的图片缩放工具诞生了&#xff0c;它能够让你轻松将多张JPG图片像素放大&#xff0c;同…...

FILE类与IO流

目录 File类的实例化与常用方法 File类的理解 文件路径的表示方式&#xff1a; API的使用 IO流概述与流的分类 I/O流中的是Input/Output的缩写 IO流的分类&#xff08;不同角度&#xff09; Java程序中的IO流涉及40多个&#xff0c;但实际上都是由4个抽象类衍生出来的。 F…...

基于java+springboot+vue实现的智慧党建系统(文末源码+Lw+ppt)23-58

摘 要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统智慧党建管理采取了人工的管理方法&#xff0c;但这种管…...

HiveSQL基础Day03

回顾总结 hive表的类型 &#xff1a;内部表和外部表 删除内部表会删除表的所有数据 删除外部表只会删除表的元数据&#xff0c;hdfs上的行数据会保留 表的分区和分桶 本质都是对表数据的拆分存储 分区的方式 是通过创建不同的目录来拆分数据 &#xff0c;根据数据本身的内容最为…...

houdini 学习过程

1.基础界面操作了解 当初通过 朱峰上的界面 工具栏操作入门的&#xff0c;现在B站上应该也比较多 houdini pdf早期的 2.节点操作 B站视频 教程 3.vex B站捷佳 4.BILIBILI ENTAGMA CGWIKI YOUTUBE 5.节点功能的深入&#xff0c;属性了解&#xff0c;或其它节点扩充 常用&…...

Angular学习第四天--问题记录及父子组件问题

问题一、 拉取完项目&#xff0c;使用npm install命令的时候遇到的。 解决办法&#xff1a; 在查找网上五花八门的解决方案之后&#xff0c;发现都不能解决。 我的解决办法是&#xff1a; 1. 把package-lock.json给删掉&#xff1b; 2. 把package.json中公司自己库的包给删除掉…...

如何拿捏2024年的B端设计?(附工具推荐)

伴随着2019年前的互联网人口红利时代结束&#xff0c;科技行业的基本面发生了巨大的变化&#xff0c;以普通消费者为目标的C端需求大幅萎缩&#xff0c;面向企业的B端需求成为行业热点。 在2024年的今天&#xff0c;设计师应该如何理解B端设计的实质&#xff0c;并真正驾驭B端产…...

【蓝桥杯】2024年第15届真题题目

试题 A: 握手问题 本题总分&#xff1a; 5 分 【问题描述】 小蓝组织了一场算法交流会议&#xff0c;总共有 50 人参加了本次会议。在会议上&#xff0c; 大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进 行一次握手&#xff08;且仅有一次&a…...

LLM生成模型在生物单细胞single cell的应用:scGPT

参考&#xff1a; https://github.com/bowang-lab/scGPT https://www.youtube.com/watch?vXhwYlgEeQAs 相关算法&#xff1a; 主要是把单细胞测序出来的基因表达量的拼接起来构建成的序列&#xff0c;这里不是用的基因的ATCG&#xff0c;是直接用的基因名称 训练数据&#x…...

力扣15题. 三数之和

题目&#xff1a; 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复…...

项目经理好还是产品经理好?入行必读!

在现代项目管理领域&#xff0c;产品经理Product Manager和项目经理Project Manager&#xff0c;两者虽都是PM&#xff0c;但两者在实际操作中却有着显著的区别&#xff0c;在各自的领域中承担着不同的岗位职责和工作。 项目经理跟产品经理两个证都挺受市场欢迎的&#xff0c;…...

Elastic安装后 postman对elasticsearch进行测试

一、创建索引和mapping //id 字段自增id //good_sn 商品SKU //good_name 商品名称 //good_introduction 商品简介 //good_descript 商品详情 PUT http://IP:9200/shop { "mappings":{ "good":{ "properties":{ …...

JPA (Java Persistence API)

一、Jpa的介绍 JPA &#xff0c;是一套Sun公司Java官方制定的ORM 规范。 ORM&#xff0c;即 对象关系映射 &#xff08;Object Relational Mapping&#xff09;&#xff0c;是一种程序技术&#xff0c;用于 在关系数据库和业务实体对象之间做映射 。ORM 框架的存在&#xff0c;…...

实战要求下,如何做好资产安全信息管理

文章目录 一、资产安全信息管理的重要性二、资产安全信息管理的痛点三、如何做好资产安全信息管理1、提升资产安全信息自动化、集约化管理能力&#xff0c;做到资产全过程管理2、做好资产的安全风险识别3、做好互联网暴露面的测绘与管空4、做好资产安全信息的动态稽核管理 “摸…...

[matlab]matcaffe在matlab2023a安装和配置过程

测试环境&#xff1a; caffe-windows-cpu-py35-matlab2018b-vs2015-20220321 matlab2023a 注意&#xff1a;由于matlab新版本不允许添加特殊目录&#xff0c;比如有和private目录&#xff0c;添加后也会警告&#xff0c;但是可以忽略。因此可以使用我研发的matlab环境添加工具…...

【word2pdf】Springboot word转pdf(自学使用)

文章目录 概要整体介绍具体实现官网pom文件增加依赖 遇到的问题本地运行OK&#xff0c;发布到Linux报错还是本地OK&#xff0c;但是Linux能运行的&#xff0c;但是中文乱码 小结 概要 Springboot word 转 pdf 整体介绍 搜了一下&#xff0c;发现了能实现功能的方法有四种 U…...

3_2Linux中内核级加强型火墙的管理

### 一.Selinux的功能 ### 观察现象 ①当Selinux未开启时 在/mnt中建立文件被移动到/var/ftp下可以被vsftpd服务访问 匿名用户可以通过设置后上传文件 当使用ls -Z /var/ftp查看文件时显示"?" ps auxZ | grep vsftpd 时显示&#xff1a; - root 8546 0.0 0.0 26952 …...

PCB工艺规范及PCB设计安规原则

一、目的 规范产品的PCB工艺设计&#xff0c;规定PCB工艺设计的相关参数&#xff0c;使得PCB的设计满足可生产性、可测试性、安规、EMC、EMI等的技术规范要求&#xff0c;在产品设计过程中构建产品的工艺、技术、质量、成本优势。 二、适用范围 本规范适用于所有电了产品的PCB工…...

Qt for Android 开发环境

在搭建环境时开始感觉还挺顺利的&#xff0c;从 Qt 配置的环境里面看并没有什么问题&#xff0c;可真正编译程序的时候发现全是错误。 最开始的时候安装了 JDK21 最新版本&#xff0c;然后根据 JDK21 安装 ndk, build-tools, Platform-Tools 和 Gradle&#xff0c;但是不管这么…...

【题解】BC64 牛牛的快递(C++)

#include <iostream> #include<string> #include<math.h> using namespace std;int main() {int c0;string b;float a;cin>>a>>b;if(a>1)c20ceil(a-1);elsec20;if(b"y")c5;cout<<c; }在C中&#xff0c;ceil() 函数用于返回大…...

C++(运算符重载+赋值拷贝函数+日期类的书写)

目录 运算符重载运算赋值重载和运算赋重载前置和后置<,<,>,>,,!运算符重载日期类的实现<<流插入和>>流提取的运算符重载总结 运算符重载 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也具有其 返回…...

【介绍下负载均衡原理及算法】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…...

前端开发培训中心/陕西网站关键词自然排名优化

在Web应用中&#xff0c;HTTP请求是无状态的。即&#xff1a;用户第一次发起请求&#xff0c;与服务器建立连接并登录成功后&#xff0c;为了避免每次打开一个页面需要登录&#xff0c;就出现了cookie&#xff0c;sesseion。CookieCookie是客户端保存用户信息的一种机制&#x…...

建设 网站工作汇报/山东公司网站推广优化

2019独角兽企业重金招聘Python工程师标准>>> C/C的64位整型 在C/C中&#xff0c;64为整型一直是一种没有确定规范的数据类型。现今主流的编译器中&#xff0c;对64为整型的支持也是标准不一&#xff0c;形态各异。一般来说&#xff0c;64位整型的定义方式有long lon…...

建网站知识/网络营销流程

一、表单 1. form表单本身 <form name"myform" action"#" method"get"> <!-- 所有的表单项写在form标签里边 --></form> 属性&#xff1a; name&#xff1a;表单的名称 action&#xff1a;表单数据的提交路径 method&#x…...

哪个网站做h5好/网址导航下载到桌面

相信第一次处理中文的朋友们可能都会对中文的encoding 和程序的报错很头疼。 如果你像我一样希望能够把事情尽快做好而不去深究&#xff0c;你可能会写一些异常处理的代码把 UnicodeEncodingError糊弄过去先&#xff0c;但当你开始怀疑有多少encoding出错的信息被你丢弃的时候&…...

做百度网站电话号码/网上销售有哪些方法

这个到处都在谈用户体验的年代&#xff0c;每一个网站的好坏似乎都跟用户体验都扯上了一点关系。大家都知道&#xff0c;做SEO的无非就是简单的两件事情重复做&#xff1a;内容、外链。今天抛开外链不说&#xff0c;谈一谈什么样的内容才是百度喜欢的。很多人都知道写原创、伪原…...

网站设计网站建设专业/武汉seo优化公司

路由是选择一条数据包传输路径的过程&#xff0c;也就是说主机怎么向目的地发送数据的过程。当TCP/IP主机发送IP数据包时&#xff0c;便出现了路由&#xff0c;且当到达IP路由器时还会再次出现。路由器是从一个物理网向另一个物理网发送数据包的装置&#xff0c;路由器通常被称…...