news 2026/3/24 9:07:33

鸿蒙极速入门(三)-TypeScript语言

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
鸿蒙极速入门(三)-TypeScript语言

ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,需要先了解一下TS语言的基础知识。

一、基础类型

  1. 数字类型-number
    双精度 64 位浮点值。它可以用来表示整数和分数

let decLiteral: number = 6;
2. 字符串类型-string
一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式。

let name: string = “Runoob”;
let words: string =您好,今年是 ${ name } 发布 ${ years + 1} 周年;
3. 布尔类型-boolean
表示逻辑值:true 和 false。

let flag: boolean = true;
4. 枚举-enum
枚举类型用于定义数值集合。

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

let arr: number[] = [1, 2]; // 在元素类型后面加上[]
let arr: Array = [1, 2]; // 使用数组泛型
6. 元组
元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。

let x: [string, number];
x = [‘Runoob’, 1];
7. 特殊类型-any、null、undefined
Any
任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,变量的值会动态改变时使用

let x: any = 1; // 数字类型
x = ‘I am who I am’; // 字符串类型
x = false; // 布尔类型
null
null是一个只有一个值的特殊类型。表示一个空对象引用。用 typeof 检测 null 返回是 object。

var person = null; // 值为 null(空), 但类型为object
undefined
undefined 是一个没有设置值的变量。typeof 一个没有值的变量会返回 undefined。

var person; // 值为 undefined, 类型是undefined
var person = undefined; // 值为 undefined, 类型为 undefined
undefined 和 null 的区别
null 和 undefined 的值相等,但类型不等:

typeof undefined // undefined
typeof null // object
null === undefined // false (类型不等)
null == undefined // true (值相等)
二、变量
var [变量名] : [类型] = 值;

var uname = “Runoob”;
let password = “123456”;
注意:Swift 中,var 为变量,let 为常量;而 JavaScript 中,var 为函数作用域变量,let 为块作用域变量,const 为常量。

三、常量

const PI = 3.141592653589793;
四、流程控制语句

// if
var num:number = 2
if(num > 0) {
console.log(num+" 是正数")
} else if(num < 0) {
console.log(num+" 是负数")
} else {
console.log(num+" 不是正数也不是负数")
}

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

// for
var num:number = 5;
var i:number;
var factorial = 1;
for(i = num;i>=1;i–) {
factorial *= i;
}

// for in
var j:any;
var n:any = “a b c”;
for(j in n) {
console.log(n[j]);
}

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

// forEach
let list = [4, 5, 6];
list.forEach((val, idx, array) => {
// val: 当前值
// idx:当前index
// array: Array
});

// every
let list = [4, 5, 6];
list.every((val, idx, array) => {
// val: 当前值
// idx:当前index
// array: Array
return true; // Continues
// Return false will quit the iteration
});

// while
var num:number = 5;
var factorial:number = 1;
while(num >=1) {
factorial = factorial * num;
num–;
}

// do while
var n:number = 10;
do {
console.log(n);
n–;
} while(n>=0);
在循环语句中支持break和continue关键字,跳出或继续循环

五、函数
语法格式:

// 默认
function function_name(){}
// 带返回值,:后的T为返回值类型
function function_name(): T{}
// 带参函数,支持默认值
function function_name(param1[:type],param2[:type] = default_value) {}
// 带剩余参数,函数的最后一个命名参数 restOfName 以 … 为前缀,它将成为一个由剩余参数组成的数组
function buildName(firstName: string, …restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
// 匿名函数
var res = function( [arguments] ) { … }
// 构造函数
var res = new Function ([arg1[, arg2[, …argN]],] functionBody)
// Lambda 函数
( [param1, param2,…param n] )=>statement;
六、类( Class )
语法格式:

class class_name {
// 类作用域
}
普通
示例:

class Car {
// 字段
engine:string;

// 构造函数 constructor(engine:string) { this.engine = engine } // 方法 disp():void { console.log("发动机为 : "+this.engine) }

}

var obj = new Car(“Engine 1”)
obj.field_name // 访问属性
obj.function_name() // 访问方法
继承
使用extends作为关键字:

class Shape {
Area:number

constructor(a:number) {
this.Area = a
}

test() {}
}

class Circle extends Shape {
disp():void {
console.log("圆的面积: "+this.Area)
}

test() {
super.test() // 重写父类方法
}
}

var obj = new Circle(223);
obj.disp();
obj.test;
七、接口
语法定义:

interface interface_name {
}
普通

interface IPerson {
firstName:string,
lastName:string,
sayHi: ()=>string
}

var customer:IPerson = {
firstName:“Tom”,
lastName:“Hanks”,
sayHi: ():string =>{return “Hi there”}
}
接口继承
接口可以通过关键字extends来继承其他接口以扩展自己。

单继承

interface Person {
age:number
}

interface Musician extends Person {
instrument:string
}

var drummer = {};
drummer.age = 27
drummer.instrument = “Drums”
多继承

interface IParent1 {
v1:number
}

interface IParent2 {
v2:number
}

interface Child extends IParent1, IParent2 { }
var Iobj:Child = { v1:12, v2:23}
八、导入( Import )
通过关键字import导入其他文件

import someInterfaceRef = require(“./SomeInterface”);

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 11:44:45

【稀缺资源】Open-AutoGLM级AI仅此6款:掌握这4个判断标准避免选错

第一章&#xff1a;Open-AutoGLM类似的ai有哪些?在人工智能领域&#xff0c;尤其是面向自动化代码生成与自然语言理解任务中&#xff0c;Open-AutoGLM 作为一种结合大语言模型与图学习的开源框架&#xff0c;激发了众多类似系统的研发。这些系统在架构设计、应用场景和扩展能力…

作者头像 李华
网站建设 2026/3/15 9:35:02

ruoyi集成 camunda 实现审批驳回

驳回是指审批人或司法机关对提交的申请或请求进行审查后&#xff0c;认为其不符合要求或无法成立&#xff0c;从而作出的不予同意、拒绝其通过的决定&#xff0c;该决定通常会导致流程回退或申请被否定。 演示地址ruoyiflow驳回功能演示 测试账号信息: 账号: ry 密码: ry2025账…

作者头像 李华
网站建设 2026/3/15 9:53:19

计算机Java毕设实战-基于springboot的校园快递仓库管理系统的设计与实现包裹的收寄、在仓库的存储、出库、配送【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/15 9:36:37

Photoshop 选区的核心操作

一、 选区的基本概念 作用 &#xff1a;将图像处理操作限制在特定区域内&#xff0c;实现局部调整。 视觉标识 &#xff1a;选区周围显示的虚线&#xff0c;俗称“蚂蚁线”。 二、 核心操作与快捷键三、 移动操作详解 移动选区本身&#xff08;不移动图像像素&#xff09; 绘制…

作者头像 李华
网站建设 2026/3/15 9:35:11

零门槛挖漏洞:小白从0到1赚高赏金,副业月入过万实战指南

零门槛挖漏洞&#xff1a;小白从 0 到 1 赚高赏金&#xff0c;副业月入过万实战指南 总想琢磨搞个副业&#xff0c;但要么怕没技能、要么嫌门槛高&#xff0c;兜兜转转啥也没做成&#xff1f; 其实这个挖漏洞就特适合小白 &#xff01;但一听 “漏洞” 就觉得是高科技、得懂编…

作者头像 李华