什么是ArkTS:
ArkTS是HarmonyOS優(yōu)選的主力應(yīng)用開發(fā)語言乓土。ArkTS圍繞應(yīng)用開發(fā)在TypeScript(簡(jiǎn)稱TS)生態(tài)基礎(chǔ)上做了進(jìn)一步擴(kuò)展,保持了TS的基本風(fēng)格,同時(shí)通過規(guī)范定義強(qiáng)化開發(fā)期靜態(tài)檢查和分析戳表,提升程序執(zhí)行穩(wěn)定性和性能。-
ArkTs和TS關(guān)系:
ArkTS通過規(guī)范約束了TypeScript(簡(jiǎn)稱TS)中過于靈活而影響開發(fā)正確性或者給運(yùn)行時(shí)帶來不必要額外開銷的特性昼伴。
從API version 10開始匾旭,ArkTS進(jìn)一步通過規(guī)范強(qiáng)化靜態(tài)檢查和分析,對(duì)比標(biāo)準(zhǔn)TS的差異可以參考從TypeScript到ArkTS的適配規(guī)則:
強(qiáng)制使用靜態(tài)類型:靜態(tài)類型是ArkTS最重要的特性之一圃郊。如果使用靜態(tài)類型价涝,那么程序中變量的類型就是確定的。同時(shí)持舆,由于所有類型在程序?qū)嶋H運(yùn)行前都是已知的色瘩,編譯器可以驗(yàn)證代碼的正確性,從而減少運(yùn)行時(shí)的類型檢查逸寓,有助于性能提升居兆。
禁止在運(yùn)行時(shí)改變對(duì)象布局:為實(shí)現(xiàn)最大性能,ArkTS要求在程序執(zhí)行期間不能更改對(duì)象布局竹伸。
限制運(yùn)算符語義:為獲得更好的性能并鼓勵(lì)開發(fā)者編寫更清晰的代碼泥栖,ArkTS限制了一些運(yùn)算符的語義。比如佩伤,一元加法運(yùn)算符只能作用于數(shù)字聊倔,不能用于其他類型的變量。
不支持Structural typing:對(duì)Structural typing的支持需要在語言生巡、編譯器和運(yùn)行時(shí)進(jìn)行大量的考慮和仔細(xì)的實(shí)現(xiàn)耙蔑,當(dāng)前ArkTS不支持該特性。根據(jù)實(shí)際場(chǎng)景的需求和反饋孤荣,我們后續(xù)會(huì)重新考慮甸陌。
當(dāng)前须揣,在UI開發(fā)框架中,ArkTS主要擴(kuò)展了如下能力:
基本語法:ArkTS定義了聲明式UI描述钱豁、自定義組件和動(dòng)態(tài)擴(kuò)展UI元素的能力耻卡,再配合ArkUI開發(fā)框架中的系統(tǒng)組件及其相關(guān)的事件方法、屬性方法等共同構(gòu)成了UI開發(fā)的主體牲尺。
狀態(tài)管理:ArkTS提供了多維度的狀態(tài)管理機(jī)制卵酪。在UI開發(fā)框架中,與UI相關(guān)聯(lián)的數(shù)據(jù)可以在組件內(nèi)使用谤碳,也可以在不同組件層級(jí)間傳遞溃卡,比如父子組件之間、爺孫組件之間蜒简,還可以在應(yīng)用全局范圍內(nèi)傳遞或跨設(shè)備傳遞瘸羡。另外,從數(shù)據(jù)的傳遞形式來看搓茬,可分為只讀的單向傳遞和可變更的雙向傳遞犹赖。開發(fā)者可以靈活地利用這些能力來實(shí)現(xiàn)數(shù)據(jù)和UI的聯(lián)動(dòng)。
渲染控制:ArkTS提供了渲染控制的能力卷仑。條件渲染可根據(jù)應(yīng)用的不同狀態(tài)峻村,渲染對(duì)應(yīng)狀態(tài)下的UI內(nèi)容。循環(huán)渲染可從數(shù)據(jù)源中迭代獲取數(shù)據(jù)系枪,并在每次迭代過程中創(chuàng)建相應(yīng)的組件雀哨。數(shù)據(jù)懶加載從數(shù)據(jù)源中按需迭代數(shù)據(jù),并在每次迭代過程中創(chuàng)建相應(yīng)的組件私爷。
ArkTS兼容TS/JavaScript(簡(jiǎn)稱JS)生態(tài),開發(fā)者可以使用TS/JS進(jìn)行開發(fā)或復(fù)用已有代碼膊夹。HarmonyOS系統(tǒng)對(duì)TS/JS支持的詳細(xì)情況參見兼容TS/JS的約束衬浑。
未來,ArkTS會(huì)結(jié)合應(yīng)用開發(fā)/運(yùn)行的需求持續(xù)演進(jìn)放刨,逐步提供并行和并發(fā)能力增強(qiáng)工秩、系統(tǒng)類型增強(qiáng)、分布式開發(fā)范式等更多特性进统。