第一章:ArkTS语言基础(上)——掌握基本语法
各位同学,欢迎来到《鸿蒙原生应用从零到上架完整指南》的第一章。今天咱们聊聊ArkTS的基础语法。
说实话,ArkTS这门语言,你把它当成TypeScript的“鸿蒙特供版”就行。核心语法几乎一样,但加了一些鸿蒙特有的东西。我刚开始接触时,心里还嘀咕:“这不就是TS换了个马甲吗?”后来深入用了才发现,嗯,确实有它的独到之处。
1.1 变量声明:let 和 const
在ArkTS里声明变量,就两个关键字:let 和 const。千万别用 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(布尔值)
就两个值:true 和 false。判断条件时经常用。
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 的指向。这个特性在鸿蒙开发中特别有用,后面讲组件事件时你会体会到。
经验之谈:函数名要起得有意义。别用 func1、doSomething 这种名字。好的函数名应该让人一看就知道它干什么。比如 calculateTotalPrice 就比 calc 好得多。
本章小结
好了,第一章的内容就这些。咱们回顾一下:
| 知识点 | 要点 |
|---|---|
| 变量声明 | 用 let 和 const,别用 var |
| 数据类型 | number、string、boolean、数组、对象 |
| 条件判断 | if/else,注意 == 和 = 的区别 |
| 循环 | for(推荐for...of)、while,小心死循环 |
| 函数 | 普通函数和箭头函数,函数名要语义化 |
这些是ArkTS最基础的东西。你可能会觉得简单,但基础打牢了,后面学起来才快。下一章咱们会深入讲更高级的语法,比如接口、泛型这些。到时候你会发现,今天学的这些就是地基。
有什么问题,欢迎随时交流。咱们下章见。
公众号:蓝海资料掘金营,微信deep3321