TS的快速入门(HarmonyOS学习第一课)

news2024/11/24 19:59:51

快速入门


学习TypeScript 对于Harmony0s,应用开发至关重要。在Harmonyos 中,主力编程语言为 ArKTS,它是基于 TypeScript 的一种语言,其通过与ArkUI 框架的匹配,拓展了声明式UI和状态管理等能力,使开发者能够以更简洁自然的方式开发跨应用。Typescript 本身是 Javaseript 的超集,通过引入静态类型定义等特性,提高了代码的可维护性和可读性,有助于在编码阶段检测潜在错误,提高开发效率另外,学习Typeseript还为处理Harmenyos 应用中的 UI 和应用状态提供了更强大的支持,在并发任务方面也有相应的扩展。为更好地对HarmonyOs进行开发需要掌握Typescript语言,本接我们重点介绍TypeScript 语言。

基本类型使用:


//定义boolean类型变量

let isOff= true

let isOn =false

console.log(isOff)

console.log(isOn)

//定义数字类型的变量

let a : number =12

let b : number =3.1415926

//二进制

let c : number =0b1100

console.log(c)

//定义字符串类型/数组类型

let aStr = "hello"

//数组类型

//第一种

let arr1 : number[]=[1,2,3,4,5,6,7]

console.log(arr1)

console.log(arr1[0])

//第二种

let arr2: Array<string>=["a","b","c"]

console.log(arr2)

//对数据组最后进行添加操作

arr2.push("hello")

arr2.push("he")

console.log(arr2)

//删除数组最后面一个数据

arr2.pop()

console.log(arr2)

//在数组任意位置进行添加或者是删除

//arr2.splice("下标","0=添加,1=删除","内容")

arr2.splice(2,0,"native")

console.log(arr2)

元组的使用:


//元组

let t1:[string,number]

t1 = ['hello',100]

//需要按照let t1:[string,number] 设定的内容进行添加,否则报错

console.log(t1)

console.log(t1[0])

//枚举

//enum 类型是对Javascript 标准数据类型的一个补充,

// 使用枚举类型可以为一组数值赋予友好的名字。例如我们这里定义Color为Red,

// Green和Blue,到时候就可以使用 Coler.Green 来定义颜色。

enum sex{

    MAIL="男",

    NU="女",

}

let a:sex=sex.MAIL

let b:sex=sex.NU

console.log(a)

console.log(b)

Unknown

enum 类型是对Javascript 标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字。例如我们这里定义Color为Red,Green和Blue,到时候就可以使用 color.Green 来定义颜色。

//定义未知类型

//之后可以进行任意类型赋值

let  show : unknown;

show=4;

show="hello";

show=false;

//viod : 函数没有返回值

function  myFunc(): void{

    console.log("执行函数,没有返回值")

}

myFunc()

//Null undefined

// console.log(efg)

let n =null

let m =undefined

//联合类型

//定义变量可以是字符串也可以是数值。

let myF : string | number = 100

// let myF : string | number = "hello"

TS条件语句


if语句

//最简单的if语句

let age : number =60

if (age >= 18 && age<=20){

    console.log("已经成年")

}else if(age>=18 && age<=60){

    console.log("中年")

}else{

    console.log("老年")

}

使用swith进行判断(多条件的等于判断)

let gender= "MAIL"

switch(gender){

    case  "MAIL" :{

        console.log("男")

        break;

    }

        case  "FEMAIL" :{

        console.log("女")

        break;

    }

    default:{

        console.log("不能确定")

        break;

    }

}

循环语句

//循环

//for循环

//第一种

// let i:number;

// for( i = 1;i<=10 ;i++ ){

//    console.log(i)

// }

//第二种

 let j :any; //Any为任意类型

 let nums : Array<number>=[10,11,12]

 for (j in nums){

    console.log(nums[j])

 }

函数


函数

是一组一起执行一个任务的语句,函数声明要告诉编译器函数的名称、返回类型和参数。Typescript可以创建有名字的函数和匿名函数

//普通函数

//定义一个普通函数 :number返回值

function add(x:number,y:number):number{

    return x + y

}

//函数调用

let result:number =add(10,29)

console.log(result)

//匿名函数(老版本)

let add_func =function (x:number,y:number){

    return x + y

}

console.log(add_func(10,20))

//定义一个可选参数

function text1(x:number,name?:string):void{

  console.log(x,name)

}

text1(10)

function text2(x:number,name?:string):void{

  if(name){

    console.log(x,name)

}else{

    console.log(x)

}

}

text2(10)

//剩余函数

function text3(x:number,...other:Array<string>):void{

    console.log(x)

    if(other.length == 0){

        console.log("剩余参数没有传")

    }else{

        let i :any;

        for (i in other){

            console.log(other[i])

        }

    }

}

text3(20)

箭头函数

ES6版本的TypeScript提供了一个箭头函数,它是定义匿名函数的简写语法,用于函数表达式,它省略了函数关键字。箭头函数的定义如下,其函数是一个语句块

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

//箭头函数

let let1=(x:number,y:number)=>{

    return x + y

}

console.log(let1(1,2))


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

//类实例

//定义一个类

//private 私有属性

//public 公有属性

class Person{

    private name:string

    private age :number

    //定义构造函数(方法)

    constructor(name:string,age:number){

        this.name = name

        this.age =age

    }

    //公共成员函数

    public getPersonInfo() :string{

      return `我的名字是:${this.name} ,年龄 ${this.age}`

    }

}

//构造Person类的实例

//使用new方法传入

let p=new Person ("张三",27)

console.log(p.getPersonInfo())

继承


继承就是子类继承父类的特征和行为,使得子类具有父类相同的行为。Typescript中允许使用继承来扩展现有的类,对应的关键字为extends。如下案例中,我们定义employee 是继承于person的employee l person 新增了一个属性 department,我们可以这样去定义它的构造方法,通过super 关键字实际上就调用了person 中的构造方法,初始化name和age,并在构造方法中初始化好了department,employee有个公有方法,getemployeeinfo 获取雇员的信息,其中调用 getpersoninfo 来获取雇员的姓名、年龄信息

//类实例

//定义一个类

//private 私有属性

//public 公有属性

//protected 表示在一个包里面都可以使用

class Person{

    private name:string

    private age :number

    //定义构造函数(方法)

    constructor(name:string,age:number){

        this.name = name

        this.age =age

    }

    //公共成员函数

    public getPersonInfo() :string{

      return `我的名字是:${this.name} ,年龄 ${this.age}`

    }

}

//构造Person类的实例

//使用new方法传入

let p=new Person ("张三",27)

console.log(p.getPersonInfo())

//继承

//定义一个类继承Person

//extends

class Employee extends Person {

  private department :string;

  constructor(name:string,age:number,department:string){

    //super() 调用父类的构造函数

    super(name,age)

    this.department=department

    //department 子类新定义的

  }

  //定义属于子类自己的构造函数

  public getEmpInfo(): string{

        return this.getPersonInfo()+`,我工作的部门是:${this.department}`

  }

}

let emp=new Employee("王五",22,"行政")

console.log(emp.getEmpInfo())

console.log(emp.getPersonInfo())

模块


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

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

首先在src文件夹下新建

在终端编译TS命令

//编译ts文件命令:tsc "文件名"

完成后效果:

编译完成之后,在终端就可以使用node执行编译后的js文件

//编译ts文件命令:node "文件名"

可迭代对象


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

//可迭代性 ,可迭代对象

let str1:any = "adadadada"

// console.log(str1[Symbol.iterator])

// for...of 遍历可迭代对象中每一个元素  i 代表其中一个元素

// for...in 遍历可迭代对象中每一个元素  i 代表其中一个元素的下标

for (let i of str1){

    console.log(i)

}

for (let j in str1){

    console.log(j)

}

//map类型 :每个元素都有两个元素组成:key,value

let map1=new Map<string,number>()

map1.set('a',1)

map1.set('name',12)

map1.set('age',10)

for (let k of map1){

    console.log(k[1])

}

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

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

相关文章

BMS-HiL系统方案设计

系统集成了业内著名 NI 公司的软硬件平台。 系统设计采用分布式设计模式。主控上位机作为整个实验的管理者主要设计软件交互和 流程管理的业务&#xff1b;下位机主要业务为序列执行与设备调用&#xff0c;各模块详细测试方案如下所示。 系统搭建使用 PXI 系统技术&#xff0c;…

【命名空间】(中北大学-程序设计基础(2))

目录 题目 源码 结果示例 题目 学校的人事部门保存了有关学生的部分数据&#xff08;学号、姓名、年龄、住址&#xff09;&#xff0c;教务部门也保存了学生的另外一些部分数据&#xff08;学号、姓名、性别、成绩&#xff09;&#xff0c;两个部门分别编写了本部门的数据管…

OS复习笔记ch5-4-2

引言 承接上文我们介绍了信号量机制和应用信号量机制实现的进程同步和互斥&#xff0c;这一节我们将围绕一些经典问题对信号量机制展开更深入地探讨。 读者/写者问题 读者/写者问题与我们之前遇到的问题类型不同&#xff0c;它描述的是&#xff1a; 有读者和写者两组进程&am…

分布式版本控制工具git

1 安装Git 在linux上我们建议你用二进制的方式来安装git&#xff0c;可以使用发行版包含的基础软件包管理工具来安装&#xff0c;如果你是 是CentOS或者Fedora的操作系统&#xff0c;可以使用yum命令来安装git&#xff1a; $ sudo yum install git如果你是ubuntu或者是Debian…

语音识别-paddlespeech-流程梳理

上一次研究语音识别是21年年底的事情了&#xff0c;记得当时是先进行了语音识别的应用&#xff0c;然后操作了模型的再次训练&#xff1b;两年过去&#xff0c;关于ASR相关流程忘得差不多了&#xff0c;这次基于paddlespeech的代码&#xff0c;进行了流程的梳理&#xff0c;关于…

从零创建一个vue2项目

标题从零创建一个vue2项目&#xff0c;项目中使用TensorFlow.js识别手写文字 npm切换到淘宝镜像 npm config set registry https://registry.npm.taobao.org安装vue/cli -g npm install -g vue/cli检查是否安装成功 vue -V创建项目 vue create 项目名安装TensorFlow npm …

AI试衣IDM-VTON,Windows11本地安装配置记录!

昨天我们已经介绍过IDM-VTON这个开源项目了。 通过这个软件可以轻松实现一键换衣服。 昨天&#xff0c;简单演示了一下在线使用。 今天&#xff0c;来演示如何安装到本地电脑上&#xff01; 本地配置会有一定的专业性&#xff0c;懂的人可以参考下。 不懂得直接拉到最后&am…

绘制一个单级放大电路原理图过程,保姆级教程

新手在学习pads的使用最好最快的方法就是实际上手去画原理图&#xff0c;画PCB图&#xff0c;在这个过程中&#xff0c;就能够更快速得掌握PADS软件的使用。 本篇就是对于实际画原理图过程的一个记录&#xff0c;手把手教学&#xff0c;如果有纰漏或者有更好的一些技巧&#xf…

购买正版SOLIDWORKS软件有哪些好处?

在工程设计和制造领域&#xff0c;SOLIDWORKS软件以其强大的功能和广泛的应用而备受推崇。购买正版SOLIDWORKS软件&#xff0c;不仅是对知识产权的尊重&#xff0c;更是对企业和个人长远发展的明智选择。下面&#xff0c;我们将探讨购买正版SOLIDWORKS软件所带来的诸多好处。 …

vue vite 环境非构建包编译 React 报错定位

1. 背景 众所周知&#xff0c;vite 在构建生态的位置&#xff0c;vue 与之更是密切&#xff0c;主流的 vue 库几乎都与 vite 捆绑。 但有些 UI 库 如 private/ui 并没进行行编译&#xff0c;而是直接将源码发布到了 npm 中&#xff0c;无法实现兼容化&#xff0c;需要消费方去…

LabVIEW学习记录3 - 自定义函数

LabVIEW学习记录3 - 自定义函数 一、LabVIEW学习记录二、自定义函数及函数调用 一、LabVIEW学习记录 【labVIEW】学习记录LabVIEW学习记录2 - MySQL数据库连接与操作LabVIEW学习记录 - 实时显示时间LabVIEW学习记录4-局部变量、全局变量、共享变量 二、自定义函数及函数调用 …

【vue2项目经验总结:部署到服务器之后出现所有数据渲染失败的问题】

原因是因为在没部署到服务器之前前端为了解决跨域问题使用了代理&#xff0c;但是在项目部署到服务器之后&#xff0c;前端通常不再需要使用代理&#xff0c;因为代理的作用是在开发过程中帮助前端应用程序与后端服务进行通信&#xff0c;解决跨域访问等问题。在开发阶段&#…

海洋环境保护论文阅读记录

海洋环境保护 论文1&#xff1a;Critical role of wave–seabed interactions in the extensive erosion of Yellow River estuarine sediments 波浪-海床相互作用在黄河河口广泛侵中的关键作用 estuatine 河口的&#xff0c;港湾的 erodibility侵蚀度 sediment erodibility …

Springboot HelloWorld

新建一个maven工程 引入依赖项 <modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.11.RELEASE</version><…

LLM实战:LLM微调加速神器-Unsloth + LLama3

1. 背景 五一结束后&#xff0c;本qiang~又投入了LLM的技术海洋中&#xff0c;本期将给大家带来LLM微调神器&#xff1a;Unsloth。 正如Unsloth官方的对外宣贯&#xff1a;Easily finetune & train LLMs; Get faster with unsloth。微调训练LLM&#xff0c;可以显著提升速…

(项目)-KDE巡检报告(模板

金山云于12月26日对建行共计【30】个KDE集群,合计【198】台服务器进行了巡检服务。共发现系统风险【135】条,服务风险【1912】条,服务配置风险【368】条。 一、系统风险 1、风险分析(图片+描述) (1)磁盘使用率高 问题描述多个集群的多台服务器磁盘使用率较高,远超过…

UniAD大模型开路,智能车驶入AGI时代

作者 |老缅 编辑 |德新 在刚刚结束不久的北京车展上&#xff0c;除一众明星车型亮相&#xff0c;供应链企业也开始大秀肌肉&#xff0c;其中尤其以端到端大模型为代表&#xff0c;焕新一代的智驾技术栈掀起了新一轮热潮。 作为首个提出感知决策一体化自动驾驶通用模型的公司&…

计算机网络(第八版 谢希仁 编著) 期末复习大纲

一.每章总结 第一章&#xff1a;分组交换&#xff0c;计网定义、范围划分&#xff0c;性能指标&#xff0c;五层体系结构&#xff0c;TCP/IP体系结构 第二章&#xff1a;物理层&#xff0c;码元&#xff0c;基带调制(数字信号->数字信号&#xff0c;也叫编码)&#xff0c;带…

mysql group by 细节介绍

mysql中group by的用法是配合聚合函数&#xff0c;利用分组信息进行统计&#xff0c;语句如“select name,sum(id) from test group by name,number”。 先来看下表1&#xff0c;表名为test&#xff1a; 执行如下SQL语句&#xff1a; SELECT name FROM test GROUP BY name 你…

专业音频修复软件:iZotope RX 11 for Mac 激活版

iZotope RX 专为满足后期制作专业人士的苛刻需求而设计的一款专业音频修复软件。iZotope RX 10添加了新的特性和功能&#xff0c;以解决当今后期项目中存在的一些最常见的修复问题&#xff0c;使其成为音频后期制作的最终选择。虽然包含许多其他新功能&#xff0c;但这里是新的…