第一章:ArkTS语言基础(上)——掌握基本语法

各位同学,欢迎来到《鸿蒙原生应用从零到上架完整指南》的第一章。今天咱们聊聊ArkTS的基础语法。

说实话,ArkTS这门语言,你把它当成TypeScript的“鸿蒙特供版”就行。核心语法几乎一样,但加了一些鸿蒙特有的东西。我刚开始接触时,心里还嘀咕:“这不就是TS换了个马甲吗?”后来深入用了才发现,嗯,确实有它的独到之处。

1.1 变量声明:let 和 const

在ArkTS里声明变量,就两个关键字:letconst。千万别用 var,那玩意儿在鸿蒙里已经“退休”了。

核心区别:

  • let:声明一个可变变量。值可以改。
  • const:声明一个常量。一旦赋值,不能改。
let userName: string = '张三';
userName = '李四';  // 没问题

const appVersion: number = 1.0;
appVersion = 2.0;  // 报错!常量不可修改

我个人习惯是:能用 const 就用 const。为什么?因为代码更安全,别人一看就知道这个值不会变。我在项目中遇到过好几次,因为用了 let 导致某个变量被意外修改,查了半天bug。后来学乖了,默认全用 const,除非明确知道它要变。

小技巧:声明变量时尽量指定类型。虽然ArkTS支持类型推断,但显式声明能让代码更清晰,也方便别人阅读。

1.2 数据类型

ArkTS的数据类型,说白了就那几种。咱们一个一个过。

number(数字)

整数、小数、负数,全归它管。没有像其他语言那样分int、float,一个 number 搞定。

let age: number = 25;
let price: number = 99.9;
let temperature: number = -5;

string(字符串)

用单引号或双引号都行。我个人偏爱单引号,打字快一点。

let city: string = '北京';
let greeting: string = "Hello, HarmonyOS!";

boolean(布尔值)

就两个值:truefalse。判断条件时经常用。

let isLoggedIn: boolean = false;
let hasPermission: boolean = true;

数组(Array)

数组有两种写法。你习惯哪种就用哪种。

// 写法一:泛型
let scores: Array<number> = [98, 87, 92];

// 写法二:方括号
let names: string[] = ['张三', '李四', '王五'];

我个人更推荐第二种写法,看着简洁。不过这只是个人偏好,没有对错。

对象(Object)

对象用花括号包起来,里面是键值对。注意,属性名和值之间用冒号,不是等号。

let user: object = {
  name: '张三',
  age: 25,
  isVip: true
};

注意:直接用 object 类型太宽泛了。实际开发中,我建议用接口(interface)或类型别名(type)来定义对象结构。这个后面章节会细讲。

1.3 条件判断:if/else

条件判断,说白了就是“如果...就...否则...”。语法和JavaScript一模一样。

let score: number = 85;

if (score >= 90) {
  console.log('优秀');
} else if (score >= 60) {
  console.log('及格');
} else {
  console.log('不及格');
}

这里有个坑,我曾经踩过:在条件判断里,千万别把 == 写成 =。一个等号是赋值,两个等号才是比较。ArkScript编译器会报错,但养成好习惯总没错。

建议:条件比较复杂时,用括号把条件包起来,可读性更好。比如 if ((age > 18) && (isVip === true))

1.4 循环:for 和 while

循环就是重复做某件事。ArkTS支持两种主流循环。

for 循环

最常用的循环。遍历数组时特别好用。

let fruits: string[] = ['苹果', '香蕉', '橘子'];

// 传统for循环
for (let i: number = 0; i < fruits.length; i++) {
  console.log(fruits[i]);
}

// for...of 循环(推荐)
for (let fruit of fruits) {
  console.log(fruit);
}

我个人强烈推荐用 for...of。为什么?代码更简洁,不用操心索引,也不容易越界。我在项目中遇到的大部分数组遍历bug,都是因为传统for循环的索引搞错了。

while 循环

当你不确定循环次数时,用 while

let count: number = 0;
while (count < 5) {
  console.log('当前计数:' + count);
  count++;
}

警告:写while循环时,一定要确保循环条件最终会变成false。否则就是死循环,程序会卡死。我曾经在调试时忘了写 count++,结果页面直接崩溃了...嗯,从那以后我每次写while都会检查一遍。

1.5 函数的定义与调用

函数就是一段可复用的代码块。把重复的逻辑封装起来,用的时候调一下就行。

定义函数

// 无返回值
function sayHello(name: string): void {
  console.log('你好,' + name);
}

// 有返回值
function add(a: number, b: number): number {
  return a + b;
}

// 箭头函数(推荐)
const multiply = (x: number, y: number): number => {
  return x * y;
};

调用函数

sayHello('张三');  // 输出:你好,张三

let result: number = add(3, 5);
console.log(result);  // 输出:8

let product: number = multiply(4, 6);
console.log(product);  // 输出:24

箭头函数是我现在最常用的写法。它更简洁,而且不会改变 this 的指向。这个特性在鸿蒙开发中特别有用,后面讲组件事件时你会体会到。

经验之谈:函数名要起得有意义。别用 func1doSomething 这种名字。好的函数名应该让人一看就知道它干什么。比如 calculateTotalPrice 就比 calc 好得多。

本章小结

好了,第一章的内容就这些。咱们回顾一下:

知识点 要点
变量声明 letconst,别用 var
数据类型 number、string、boolean、数组、对象
条件判断 if/else,注意 === 的区别
循环 for(推荐for...of)、while,小心死循环
函数 普通函数和箭头函数,函数名要语义化

这些是ArkTS最基础的东西。你可能会觉得简单,但基础打牢了,后面学起来才快。下一章咱们会深入讲更高级的语法,比如接口、泛型这些。到时候你会发现,今天学的这些就是地基。

有什么问题,欢迎随时交流。咱们下章见。


公众号:蓝海资料掘金营,微信deep3321