第2章:ArkTS基本语法
函数
函数定义与调用
ArkTS中的函数使用function关键字定义,支持多种参数传递方式:
// 基本函数定义
function greet(name: string): string {
return `Hello, ${name}!`;
}
// 调用函数
const message = greet("ArkTS"); // "Hello, ArkTS!"
函数参数特性
- 可选参数:使用
?标记function createUser(name: string, age?: number) { // age是可选的 } - 默认参数:
function setColor(color: string = "blue") { // 默认值为blue } - 剩余参数:
function sum(...numbers: number[]): number { return numbers.reduce((a, b) => a + b); }
箭头函数
ArkTS支持ES6风格的箭头函数:
const double = (x: number) => x * 2;
const add = (a: number, b: number) => {
const sum = a + b;
return sum;
};
函数类型
函数可以作为类型使用:
type MathOperation = (x: number, y: number) => number;
const multiply: MathOperation = (a, b) => a * b;
高阶函数
支持函数作为参数或返回值:
// 函数作为参数
function processNumbers(arr: number[], callback: (n: number) => number) {
return arr.map(callback);
}
// 函数作为返回值
function createAdder(addValue: number): (num: number) => number {
return (num) => num + addValue;
}
函数重载(Overloads)
通过声明多个函数签名实现重载:
function padLeft(value: string, padding: number): string;
function padLeft(value: string, padding: string): string;
function padLeft(value: string, padding: any): string {
if (typeof padding === "number") {
return Array(padding + 1).join(" ") + value;
}
return padding + value;
}
最佳实践
- 保持函数单一职责原则
- 合理使用类型注解
- 控制函数复杂度(建议不超过20行)
- 优先使用纯函数(无副作用)
常见错误
// 错误1:忘记返回值类型
function logError(msg) { // 应添加: void
console.error(msg);
}
// 错误2:参数类型不匹配
const handler: (str: string) => void = (num: number) => {}; // 类型不兼容
扩展阅读:ArkTS的函数继承自TypeScript,但针对HarmonyOS环境进行了性能优化,特别是在UI事件处理函数中有特殊优化机制。
