鸿蒙开发学习笔记第一篇--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: string
  private age: number

  constructor(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.鸿蒙官网

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

上位机图像处理和嵌入式模块部署(qmacvisual动态插件卸载)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们讨论过&#xff0c;qmacvisual虽然提供了很多的功能&#xff0c;包括的种类很多&#xff0c;但是总有一些功能是客户希望定制的。这些都是…

抖音小店无货源爆发期过了吗?现在还能做吗?

大家好&#xff0c;我是电商花花。 抖音小店爆发期过了吗&#xff1f; 我并不觉得&#xff0c;反而抖音小店的流量越来越大了&#xff0c;今年抖音小店日活跃用户已经突破到了9亿&#xff0c;有更大的市场和流量了&#xff0c;且现在做店越来越多了&#xff0c;再加上平台的支…

django 模板js文件为什么最后引入

<!-- 引入Bootstrap JS --> <script src"https://cdn.jsdelivr.net/npm/bootstrap5.3.0/dist/js/bootstrap.bundle.min.js"></script> 为什么最后引入例子 <!-- templates/inspection_records.html --><!DOCTYPE html> <html lang…

zookeeper解析

目录 zookeeper定义 zookeeper定义 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目 Zookeeper工作机制 zookeeper从设计模式角度来理解&#xff1a; 是一个基于观察者模式设计的分布式服务管理框架&#xff0c;它负责存储和管理大家都关心…

arm内核驱动-中断

先介绍个东西 ctags 这个工具可以像keil一样在工程里查找跳转&#xff0c;帮我们找到我们想要的东西。 安装教程可以找到&#xff0c;这里只讲怎么用。 在工程目录&#xff08;包含所有你会用到的头文件等&#xff09;下&#xff0c;先加载这个命令&#xff0c;可能要等待…

VSCode中调试C++程序

目录 一、准备工作&#xff1a;安装插件 1、C/C插件 ​编辑 2、CMake插件 3、CMake tool插件 二、调试过程 1、debug 2、打断点 3、调C/C文件 每次重新调试的时候都忘了具体步骤&#xff0c;直接给自己写个备忘录好了。 一、准备工作&#xff1a;安装插件 1、C/C插件…

李沐29_残差网络ResNet——自学笔记

残差网络 残差网络的核心思想是&#xff1a;每个附加层都应该更容易地包含原始函数作为其元素之一。 残差块 串联一个层改变函数类&#xff0c;我们希望扩大函数类&#xff0c;残差块加入快速通道来得到f(x)xg(x)的结果 ResNet块 1.高宽减半的ResNet块&#xff08;步幅2&a…

Android开发之移除权限

Android开发之移除权限 在Android开发结束后&#xff0c;我们将build好的App Bundle上传至Google Play。这时Google可能会提示一些需要解决的错误&#xff0c;比如xx权限需要限制&#xff0c;需要解释为什么需要这些权限&#xff0c;需要添加文字描述和视频链接&#xff0c;但…

MicroCinema与CCEdit:让文生视频兼具创造性与可控性

编者按&#xff1a;随着视频生成技术的飞速进步&#xff0c;我们见证了人工智能技术在视频清晰度、长视频连贯性以及对物理变化理解和镜头转换处理能力方面的显著提升。不过&#xff0c;这些高质量的生成结果是否完全符合我们的需求呢&#xff1f;显然&#xff0c;并非总是如此…

如何借助AI高效完成写作提纲

AI变革力量&#xff1a;未来数据中心的智能化之旅&#xff01; 在当今这个信息爆炸的时代&#xff0c;人工智能&#xff08;AI&#xff09;在众多领域展现出了它的能力&#xff0c;特别是在写作领域。AI写作工具不仅能够帮助我们高效地生成内容&#xff0c;还能在一定程度上提升…

利用弱监督定位的高分辨率乳腺癌筛查图像的可解释分类器

标准筛查乳房 X 光检查由每个乳房的两张高分辨率 X 射线组成&#xff0c;分别从侧面&#xff08;“中外侧”或 MLO 视图&#xff09;和上方&#xff08;“头尾”或 CC 视图&#xff09;拍摄&#xff0c;总共四张图像。 乳房X光照片的分辨率非常高&#xff0c;而大多数无症状癌症…

WebGL异步绘制多点

异步绘制线段 1.先画一个点 2.一秒钟后&#xff0c;在左下角画一个点 3.两秒钟后&#xff0c;我再画一条线段 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"…

[2024年4月最新]Python安装教程

一、Python下载 1、进入Python官网 官网地址&#xff1a;https://www.python.org 2、点击【Downloads】展开后点击【Windows】跳转到下载python版本页面&#xff0c;选择"Stable Releases"稳定版本&#xff0c;我下载的是Python 3.10.10版本&#xff0c;所以找到【…

IDEA中无法保存设置 Cannot Save Settings

确定原因: 在IDEA中父工程不应该存在有子工程的相关东西 首先,这是我的DCYJ项目(观察右侧的Content Root) 其次,这是我的EAPOFode项目(观察右侧的Content Root爆红处) 最后我将DCYJ项目右侧的Content Root全部删掉

共享单车到底是什么通信原理

我们经常骑的共享单车到底是什么通信原理&#xff0c;有人了解过吗&#xff1f; 一、智能车锁 共享单车最核心的硬件是智能车锁&#xff0c;主要用于实现控制和定位功能。 车锁内集成了嵌入式芯片&#xff08;通信模块&#xff09;&#xff0c;GPS模块和物联网SIM卡。 智能锁制…

DP例题详解(二)最短编辑距离和编辑距离

902. 最短编辑距离 - AcWing题库 #include<bits/stdc.h>using namespace std;const int N1010;int n,m; char a[N],b[N]; int f[N][N];int main() {cin>>n>>a1;cin>>m>>b1;for(int i0;i<m;i)f[0][i]i;for(int i0;i<n;i)f[i][0]i;//先初始化…

用户状态保持机制-Session

0、业务需求 会话&#xff1a;web应用中的会话是指一个客户端浏览器和服务器之间连续发生的一系列请求和响应的过程。 会话状态&#xff1a;web应用中的会话状态是指web服务器与浏览器在会话过程中产生的状态信息&#xff0c;借助会话状态&#xff0c;服务器能够把属于同一会话…

线性表概念及实现1

文章目录 前言一、线性表1.定义2.特点3.一般线性表的抽象数据类型定义 二、线性表的顺序存储&#xff08;顺序表&#xff09;1.基本概念2.数组实现顺序表3.顺序表中基本操作的具体实现 总结 前言 T_T此专栏用于记录数据结构及算法的&#xff08;痛苦&#xff09;学习历程&#…

纯小白蓝桥杯备赛笔记--DAY14(计算几何)

文章目录 计算几何基础平面几何距离圆的周长和面积圆与圆之间的关系&#xff1a;海伦公式计算三角形面积点到直线的距离 点积和叉积例题&#xff1a; 点和线的关系点的表示形式和代码判断点在直线的那边点到线的垂足点到线的距离例题-1242例题-1240升级--点到线段的距离--1285 …

指定世界TOP名校|医学研究学者公派美国麻省理工学院做博士后

W医生公派博士后条件为&#xff1a;世界TOP100的知名高校&#xff0c;研究方向相符且前沿。最终我们用世界顶级高校-美国麻省理工学院&#xff08;MIT&#xff09;的博士后邀请函助其获得单位资助&#xff0c;顺利通过签证并出国。 W医生背景&#xff1a; 申请类型&#xff1a…