ArkTS 數(shù)據(jù)類型詳解

數(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 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 聯(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ù)類型和異步處理類型。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容