第2章:ArkTS基本语法
数据类型
基本数据类型
ArkTS作为TypeScript的超集,继承了其丰富的数据类型系统,同时针对HarmonyOS生态进行了扩展优化。
1. 原始类型
- number: 双精度64位浮点数,支持整数和浮点数
let decimal: number = 6; let float: number = 3.14; - string: UTF-16字符串,支持模板字符串
let name: string = "ArkTS"; let greeting = `Hello ${name}`; - boolean: 逻辑值true/false
let isDone: boolean = false; - null/undefined: 特殊基础类型
let u: undefined = undefined; let n: null = null;
2. 特殊类型
- any: 动态类型(慎用)
let dynamicValue: any = 4; dynamicValue = "可以是字符串"; - void: 无返回值(主要用于函数)
- never: 永不存在的值(用于异常处理等场景)
复合数据类型
1. 数组
两种声明方式:
let list1: number[] = [1, 2, 3];
let list2: Array<number> = [1, 2, 3]; // 泛型语法
2. 元组(Tuple)
固定长度和类型的数组:
let x: [string, number];
x = ["hello", 10]; // 正确
x = [10, "hello"]; // 错误
3. 枚举(Enum)
数值枚举:
enum Color {Red, Green, Blue}
let c: Color = Color.Green; // 1
字符串枚举:
enum Direction {
Up = "UP",
Down = "DOWN"
}
对象类型
1. Object类型
declare function create(o: object | null): void;
create({ prop: 0 }); // 正确
create(42); // 错误
2. 类型断言
两种语法形式:
let someValue: any = "this is a string";
let strLength1: number = (<string>someValue).length;
let strLength2: number = (someValue as string).length;
ArkTS特有类型
1. @Component装饰器类型
@Component
struct MyComponent {
@State message: string = "Hello ArkUI"
}
2. 资源引用类型
Image($r('app.media.icon'))
Text($r('app.string.hello_world'))
类型检查与推断
1. 类型推断
let x = 3; // 自动推断为number类型
x = "hello"; // 报错
2. 联合类型
let padding: string | number;
padding = "20px"; // 正确
padding = 20; // 正确
最佳实践建议
- 优先使用类型注解而非any类型
- 对复杂数据结构使用接口(interface)定义
- 善用类型推断减少冗余代码
- 对HarmonyOS特有组件使用ArkTS提供的装饰器类型
注意:ArkTS在保留TypeScript类型系统的同时,对UI组件相关的类型做了特殊增强,开发者需要特别注意组件属性类型的定义方式。
