数据类型 | 作用说明 | 初始化方法 | 常用使用方法 | 遍历方法 | |
---|---|---|---|---|---|
number |
表示整数或浮点数 | let num: number = 42; |
运算:+ - * / % 转换: num.toString() 比较: num > 10
|
不适用(基础类型) | |
string |
表示字符串 | let str: string = "Hello"; |
拼接:str + " world" 查找: str.indexOf("e") 长度: str.length
|
for (let c of str) {} |
|
boolean |
表示布尔值(true 或 false) | let flag: boolean = true; |
条件判断:if (flag) 取反: !flag
|
不适用 | |
any |
任意类型,关闭类型检查 | let x: any = 123; x = "abc"; |
动态访问属性、接受任意类型值 | 不适用 | |
unknown |
不确定类型,更安全的 any
|
let value: unknown = "text"; |
需类型断言后使用:(value as string).length
|
不适用 | |
undefined |
表示变量未定义 | let u: undefined = undefined; |
通常用于检测变量是否赋值 | 不适用 | |
null |
表示空值 | let n: null = null; |
赋初始空对象、清空引用 | 不适用 | |
void |
表示无返回值(通常用于函数) | function log(): void { console.log("info"); } |
用于返回 undefined 的函数 |
不适用 | |
never |
表示永不返回(函数抛错或无限循环) | function fail(): never { throw new Error("fail"); } |
常用于错误处理、类型保护中不可达的分支 | 不适用 | |
Array<T> |
泛型数组,存储同类型元素集合 |
let nums: Array<number> = [1, 2, 3]; let strs: string[] = ["a", "b"];
|
添加元素:arr.push(4) 访问: arr[0] 长度: arr.length
|
for...of 、forEach 、for (let i=0; i<arr.length; i++)
|
|
Tuple |
固定长度、固定类型的数组 | let tuple: [string, number] = ["Tom", 30]; |
访问:tuple[0] 赋值: tuple[1] = 31
|
for (let item of tuple) {} |
|
object |
任意非基础类型的对象 | let obj: object = { name: "Tom" }; |
属性访问:obj["name"] 类型判断: typeof obj === "object"
|
for...in 、Object.keys(obj).forEach(...)
|
|
Map<K, V> |
映射集合,支持键值对数据结构 | let map = new Map<string, number>(); map.set("a", 1); |
获取:map.get("a") 删除: map.delete("a") 判断键: map.has("a")
|
for...of map map.forEach((v, k) => {...})
|
|
Set<T> |
集合,自动去重的元素集合 | let set = new Set<number>([1, 2, 3]); |
添加:set.add(4) 判断: set.has(3) 删除: set.delete(2)
|
for...of set set.forEach((item) => {...})
|
|
enum |
枚举类型,定义一组命名常量 | enum Color { Red, Green, Blue } |
获取值:Color.Red 反向映射: Color[0] // "Red"
|
for (let key in Color) {} (会遍历正反映射) |
|
union |
联合类型,表示可以是多种类型之一 | `let val: number | string = "abc";` | 类型判断:typeof val === "string" 条件分支处理 |
需先判断类型才能处理 |
literal |
字面量类型,指定精确值 | `let dir: "left" | "right" = "left";` | 类型限定:只能是指定值 | 不适用 |
interface |
定义对象结构、类型约束 | interface Person { name: string; age: number; } |
接口对象访问:obj.name 函数参数类型限制 |
for...in 遍历属性名Object.entries(obj)
|
|
type |
类型别名,可以组合多个类型 | `type ID = number | string;` | 用于提高可读性、减少重复定义 | 同基础类型 |
class |
面向对象的类结构,支持继承、方法、访问修饰符等 | class User { constructor(public name: string) {} } |
实例化:let u = new User("Tom") 方法调用: u.name
|
可定义返回数组的方法后遍历其返回值 | |
Record<K,V> |
构造类型,将所有键映射到特定类型的值 | let rec: Record<string, number> = { a: 1, b: 2 }; |
属性访问:rec["a"]
|
for (let key in rec) {} Object.entries(rec).forEach(([k, v]) => {...})
|
|
Readonly<T> |
创建只读对象或数组 | let r: Readonly<{ name: string }> = { name: "Tom" }; |
属性无法更改:r.name = "Jack" (报错) |
同 object
|
|
Partial<T> |
构造部分可选属性的类型 | let p: Partial<{ name: string; age: number }> = { name: "Tom" }; |
属性可选 | 同 object
|
|
Promise<T> |
异步操作结果的占位符 | let p: Promise<string> = new Promise((resolve) => resolve("done")); |
.then() 、async/await
|
.then(result => {...}) |
|
Function |
函数类型,定义可调用结构 | let fn: (a: number, b: number) => number = (a, b) => a + b; |
调用函数:fn(1, 2)
|
不适用 |
✅ ArkTS 是基于 TypeScript 的语言,在 OpenHarmony 系统中用于声明式 UI 开发,支持更强的类型系统和系统接口。
✅ 表格内容涵盖了常见的原始类型、对象类型、泛型工具类型、函数类型和异步处理类型。