小白挑战一周上架元服务——ArkTS03 原创

前端森之鸟
发布于 2025-8-15 19:23
浏览
0收藏

@TOC


前言

我们前面进行了了解元服务和IDE,目前前期准备工作已经差不了。我们可以进行学习代码阶段了。距离实现元服务上架,是一个里程碑式的进展。奥利给~


一、ArkTS是何方神圣?

ArkTS是HarmonyOS官方的应用开发语言,官方的自然是神圣的。ArkTS是一种设计用于构建高性能应用的编程语言。它在继承TypeScript语法的基础上进行了优化,以提供更高的性能和开发效率。
小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

  • 除了高性能以外,还提供了声明式UI范式状态管理支持
    小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

  • 在开发编码阶段提供了静态检查和分析,这个很有用的,在编码的时候可以提示错误,提高代码的健壮性。

  • 支持TypeScript/JavaScript无缝互通,使开发者可以轻松集成TypeScript和JavaScript代码到应用中,充分利用现有代码和库进行ArkTS开发。

  • 并发能力进行了增强。
    小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区
    小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

二、基本知识,是基础的1234吗?还真是

1.声明(变量/常量)

ArtTS使用let关键字声明变量,使用const关键字声明常量;
声明结构: 关键字 变量/常量名 : 数据类型 =
小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

    // 声明变量
    let height: number = 168;

    // 声明常量
    const MAX_DAYS: number = 365;

2.数据类型

ArkTS的数据类型分为两类:基本类型(数值类型)引用类型

  • 基本类型(数值类型): string,number,boolean,null,undefined
    // 字符串类型
    let name: string = '小北';
    
    // 数字类型
    let age: number = 23;
    
    // 布尔类型
    let isSuccess: boolean = true;

    // 空类型(null),该类型只有一个值null
    let empty: null = null;

    // 未定义(undefined),该类型也只有一个值undefined
    let unde: undefined = undefined;
  • 引用类型 : 接口(interface)、对象(Object)、函数(Function)、数组(Array)、元组(Tuple)、类(Class)
// 接口(interface),可以定义对象的结构,描述对象的属性(特征)和方法(行为),但不进行实现。
interface Person {                 
  name: string;                    
  age: number;
}

// 对象Object,是所有引用类型的基类。任何值都可以赋予Object类型的对象,基本类型会自动装箱,用于表示除基本类型外的类型。                                                 
let o1: Object = '小明';                                                                                             
let o2: Object = [2, 3];                                                                                           
// 对象字面量方式创建,但必须应对与显示声明的接口interface或者类class,且不适合有方法定义的接口和类。       
let xiaoming: Person = {                                                                                           
  name: '小明',                                                                                                      
  age: 23                                                                                                          
};    

//函数Function:是通过函数调用来执行特定任务的代码块。
function hello(name?: string) {
  if (name == undefined) {
    console.info('Hello!');
  } else {
    console.info(`Hello, ${name}!`);
  }
}

// 数组Array是个有序的组合,用于存储一系列的值                    
let array:Array<Number> = [1,2,3,4,6,9,10];     
let persons:string[] = ['小北','向南','东东','西西'];            
    
// 元组(Tuple),是一种特殊的数组,用于表示固定数量和类型的组合。                       
let tuple: [string, number, string] = ['小明', 23,'自由职业'];    

// 类(class)是一种特殊的对象类型,可以使用关键字new创建对象实例;                       
class User {                                                  
  name: string = '小北';                                        
  age: number = 23;                                           
}                                                                                                                         
let xiaoWang: User = new User();                                                                                                                                                                            
  • 特殊类型:枚举(Enum)、联合类型(Union)、别名(Type Aliases)
// 枚举类型(Enum),定义一组固定值,比如三原色黄绿蓝  
enum Colors {                   
  Red,                          
  Green,                        
  Blue                          
}                               
let firstColor = Colors.Red;    

// 联合类型(Union),是允许变量的值有多种类型。          
let luckyNum: number | string = 23;   
luckyNum = 'seven';  

// 别名(Type Aliases),给一个类型或表达式起一个别名,方便理解和复用
type Handler = (s: string, no: number) => string;
type NullableObject = Object | null;

3.空安全

空安全,在声明变量不确定初始值时,通常使用联合类型包含null的值。

    let name: string | null = null;                                                                        
    // 空安全机制的三种方式                                                                                          
    // 1.使用if/else进行判空                                                                                     
    if (name != null) {                                                                                    
      console.log('${name}')                                                                               
    }                                                                                                      
    // 2.使用三元运算符                                                                                           
    const res = name ?? "";                                                                                
                                                                                                           
    // 3.使用可选链,访问对象属性时,如果属性是undefined或null,可选链运算符返回undefined。                                              
    let age: string | null = '';                                                                           
    let len: number = age.length;                                                                          
                                                                                                           

4.语句

  • 条件语句: if - else
  • 条件表达式:条件 ?结果1 :结果2
if (condition1) {
  // 语句1
} else if (condition2) {
  // 语句2
} else {
  // else语句
}                                                                 

let condition ? expression1 : expression2
                                                                                                      
  • Switch条件语句
switch (expression) {
  case label1: // 如果label1匹配,则执行
    // ...
    // 语句1
    // ...
    break; // 可省略
  case label2:
  case label3: // 如果label2或label3匹配,则执行
    // ...
    // 语句23
    // ...
    break; // 可省略
  default:
    // 默认语句
}                                                               
                                                                                                           
  • 循环语句:for/for of、while/do while
let sum = 0;
for (let i = 0; i < 10; i += 2) {
  sum += i;
}  

for (let ch of 'a string object') {
  console.info(ch);
}    

let n = 0;
let x = 0;
while (n < 3) {
  n++;
  x += n;
}    

let i = 0;
do {
  i += 1;
} while (i < 10)                                                   
                                                                                                           

三、函数是一元二次方程吗?

函数Function:是通过函数调用来执行特定任务的代码块。

1.函数的声明

结构形式:function关键字 + 函数名 + (参数)+ : + 返回类型 + { 代码块 }
小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

2.函数的参数

  • 参数为空:函数可以没有参数,没有返回值的。
  • 必选参数:必须要传入的参数。
  • 可选参数:参数是可选的,即在调用函数时,可以选择性传入的参数。
  • 默认参数:就是给参数指定了一个默认值,在函数调用时如果未传入该参数,则使用默认值。
  • 剩余参数:允许开发者将函数的多个独立参数收集起来,并打包成一个数组
  /// 参数为空
  run(): void {
    console.log('跑');
  }

  /// 必选参数
  say(message: string): void {
    console.log('说了${message}');
  }

  /// 可选参数
  eat(food: string, water?: boolean): void {
    if (water) {
      console.log('吃了${food},喝了水');
    } else {
      console.log('吃了${food}');
    }
  }

  /// 默认参数
  work(days: number = 1): void {
    console.log('工作了{days}天');
  }

  /// 剩余参数
  add(...nums: number[]): number {
    let start = 0;
    for (let value of nums) {
      start += value;
    }
    return start;
  }

3.箭头函数(匿名函数)

  • 匿名函数,顾名思义就是无须显式命名,没有名字,特点就是简洁和及时性,可以使用一个易记住的名称定义来方便复用。
  • 箭头函数,所以最大的特点是要有箭头=>
  • 可以省略返回类型,由函数体自行推断返回类型。
  • 如果大括号内只有一句代码块,可以省略大括号
  • 定义在函数内部,即用即走
    // 匿名函数
    let add = (a: number, b: number): number => {
      return a + b
    };
    add(2, 4);

    // 可以省略返回值
    let less = (max: number, min: number) => {
      return max - min
    };
    less(10, 5);

    // 可以省略大括号和return
    let multiply = (a:number,b:number)=> a * b;
    multiply(3,5);
  • 作用:常用来作为函数的参数、返回值类型、闭包函数。

4.闭包函数

一个函数将另外一个函数当做返回值,且保留了对内部作用域的访问。就是保留了对包含函数内部作用域的访问。

  • 函数内部的函数,保留了函数的作用域
  • 箭头函数的一种用法。
  • 也就是返回一个函数
  times(): () => number {
    let cur = 0;
    return () => cur + 1;
  }

5.函数重载

通过编写重载函数,指定函数的不同调用方式。

  foo(a: number, b: number): void {
    let res = a + b;
    console.log('结果${res}')
  };
  foo(a: numer | string): void {
    console.log('结果${a}')
  }

四、类的魔法?

类(class)是一种特殊的对象类型,可以使用关键字new创建对象实例。魔法就是可以new一个对象(哈哈哈)。

1.类的结构

小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

2.类的创建

小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

3.类的三大特征

  • 封装:将数据隐藏起来,只对外部提供必要的接口来访问和操作数据,确保数据的一致性和安全性。
  • 继承:子类继承父类的特征和行为,使得子类具有父类相同的行为ArkTS中允许使用继承来扩展现有的类,对应的关键字为extends。
  • 多态:子类继承父类,并可以重写父类方法,使不同的实例对象对同一行为有不同的表现。

五、接口,规则的制定者吗?

接口(interface),可以定义对象的结构,描述对象的属性(特征)和方法(行为),但不进行实现。
接口是可以用来约束和规范类的方法,提高开发效率的工具,接口在程序设计中具有非常重要的作用。

1.接口的声明

使用关键字interface
小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

2.接口的实现

使用关键字implements
小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区


五、命名空间有什么超能力?

想到一个词叫做空间隔离不知道是否恰当。命名空间是一种将代码组织为不同区域的方式。用来更好地控制命名冲突和组织代码,用于组织大型应用程序中的代码,防止全局命名冲突

使用namespace关键字进行声明,使用export关键字修饰的接口/变量/函数/类,可以提供给外部空间使用。

小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区


六、模块,是乐高的积木?

1.模块的概念

一个.ets文件可以当做一个模块,封装了一些功能和特征。
小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

2.导出

通过export关键字导出一个文件的类、变量、函数等
小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

3.导入

通过import关键字导入另一个文件的变量、函数、类等
小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

4.导出多个

使用export from关键字从一个模块中导出所有的导出项,或从一个模块中导出多个特定的导出项。
小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区

5.动态导入

动态import支持条件延迟加载,支持部分反射功能,可以提升页面的加载速度。
小白挑战一周上架元服务——ArkTS03-鸿蒙开发者社区


总结

1、ArkTS的基本概念及变化
2、语法基础知识,变量、类型、条件语句、循环语句等
3、介绍了函数以及箭头函数的声明和使用
4、类的声明和使用,面向对象的三大特征:封装、继承和多态
5、命名空间的概念和使用
6、模块的导入与导出

参考

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
已于2025-8-17 10:50:54修改
收藏
回复
举报
回复
    相关推荐