| 數(shù)據(jù)類型 | 作用說明 | 初始化方法 | 常用使用方法 | 遍歷方法 | |
|---|---|---|---|---|---|
number |
表示整數(shù)或浮點數(shù) | let num: number = 42; |
運算:+ - * / %轉(zhuǎn)換: num.toString()比較: num > 10
|
不適用(基礎(chǔ)類型) | |
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 |
任意類型,關(guān)閉類型檢查 | let x: any = 123; x = "abc"; |
動態(tài)訪問屬性、接受任意類型值 | 不適用 | |
unknown |
不確定類型,更安全的 any
|
let value: unknown = "text"; |
需類型斷言后使用:(value as string).length
|
不適用 | |
undefined |
表示變量未定義 | let u: undefined = undefined; |
通常用于檢測變量是否賦值 | 不適用 | |
null |
表示空值 | let n: null = null; |
賦初始空對象、清空引用 | 不適用 | |
void |
表示無返回值(通常用于函數(shù)) | function log(): void { console.log("info"); } |
用于返回 undefined 的函數(shù) |
不適用 | |
never |
表示永不返回(函數(shù)拋錯或無限循環(huán)) | function fail(): never { throw new Error("fail"); } |
常用于錯誤處理、類型保護(hù)中不可達(dá)的分支 | 不適用 | |
Array<T> |
泛型數(shù)組,存儲同類型元素集合 |
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 |
固定長度、固定類型的數(shù)組 | let tuple: [string, number] = ["Tom", 30]; |
訪問:tuple[0]賦值: tuple[1] = 31
|
for (let item of tuple) {} |
|
object |
任意非基礎(chǔ)類型的對象 | let obj: object = { name: "Tom" }; |
屬性訪問:obj["name"]類型判斷: typeof obj === "object"
|
for...in、Object.keys(obj).forEach(...)
|
|
Map<K, V> |
映射集合,支持鍵值對數(shù)據(jù)結(jié)構(gòu) | let map = new Map<string, number>(); map.set("a", 1); |
獲?。?code>map.get("a") 刪除: map.delete("a")判斷鍵: map.has("a")
|
for...of mapmap.forEach((v, k) => {...})
|
|
Set<T> |
集合,自動去重的元素集合 | let set = new Set<number>([1, 2, 3]); |
添加:set.add(4)判斷: set.has(3)刪除: set.delete(2)
|
for...of setset.forEach((item) => {...})
|
|
enum |
枚舉類型,定義一組命名常量 | enum Color { Red, Green, Blue } |
獲取值:Color.Red反向映射: Color[0] // "Red"
|
for (let key in Color) {}(會遍歷正反映射) |
|
union |
聯(lián)合類型,表示可以是多種類型之一 | `let val: number | string = "abc";` | 類型判斷:typeof val === "string"條件分支處理 |
需先判斷類型才能處理 |
literal |
字面量類型,指定精確值 | `let dir: "left" | "right" = "left";` | 類型限定:只能是指定值 | 不適用 |
interface |
定義對象結(jié)構(gòu)、類型約束 | interface Person { name: string; age: number; } |
接口對象訪問:obj.name函數(shù)參數(shù)類型限制 |
for...in 遍歷屬性名Object.entries(obj)
|
|
type |
類型別名,可以組合多個類型 | `type ID = number | string;` | 用于提高可讀性、減少重復(fù)定義 | 同基礎(chǔ)類型 |
class |
面向?qū)ο蟮念惤Y(jié)構(gòu),支持繼承、方法、訪問修飾符等 | class User { constructor(public name: string) {} } |
實例化:let u = new User("Tom")方法調(diào)用: u.name
|
可定義返回數(shù)組的方法后遍歷其返回值 | |
Record<K,V> |
構(gòu)造類型,將所有鍵映射到特定類型的值 | let rec: Record<string, number> = { a: 1, b: 2 }; |
屬性訪問:rec["a"]
|
for (let key in rec) {}Object.entries(rec).forEach(([k, v]) => {...})
|
|
Readonly<T> |
創(chuàng)建只讀對象或數(shù)組 | let r: Readonly<{ name: string }> = { name: "Tom" }; |
屬性無法更改:r.name = "Jack"(報錯) |
同 object
|
|
Partial<T> |
構(gòu)造部分可選屬性的類型 | let p: Partial<{ name: string; age: number }> = { name: "Tom" }; |
屬性可選 | 同 object
|
|
Promise<T> |
異步操作結(jié)果的占位符 | let p: Promise<string> = new Promise((resolve) => resolve("done")); |
.then()、async/await
|
.then(result => {...}) |
|
Function |
函數(shù)類型,定義可調(diào)用結(jié)構(gòu) | let fn: (a: number, b: number) => number = (a, b) => a + b; |
調(diào)用函數(shù):fn(1, 2)
|
不適用 |
? ArkTS 是基于 TypeScript 的語言,在 OpenHarmony 系統(tǒng)中用于聲明式 UI 開發(fā),支持更強的類型系統(tǒng)和系統(tǒng)接口。
? 表格內(nèi)容涵蓋了常見的原始類型、對象類型、泛型工具類型、函數(shù)類型和異步處理類型。