HarmonyOs開發之——TypeScript介紹、入門,及 TypeScript、JavaScript、ArkTs的具體區別解讀。
一、?開發語言介紹:
TypeScript是JavaScript的超集,ArkTS則是TypeScript的超集。ArkTs是 HarmonyOs的主力開發語言,它在TypeScript(簡稱TS)的基礎上,匹配ArkUI框架,擴展了聲明式UI、狀態管理等相應的能力,讓開發者以更簡潔、更自然的方式開發跨端應用。
- JavaScript是一種屬于網絡的高級腳本語言,已經被廣泛用于Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。
- TypeScript 是 JavaScript 的一個超集,它擴展了 JavaScript 的語法,通過在JavaScript的基礎上添加靜態類型定義構建而成,是一個開源的編程語言。
- ArkTS兼容TypeScript語言,拓展了聲明式UI、狀態管理、并發任務等能力。
1、ArkTS基礎類型:
- let isSelect:boolean = false;? 布爾值
- let count:number = 2222; //0b9897989、0o45646、9x7e8? ?數字
- let name:string = "limeimei"? 字符串
- let list:number[] = [1,2,1] 數組
- let list:Array<number>=[1,2,1] 泛型數組
- enum Color{r,g,b};? let c:Color = Color.Green;? 枚舉
- function main():void{ ... }? 函數
2、類:TypeScript支持基于類的面向對象的編程方式,定義類的關鍵字為 class,后面緊跟類名。類描述了所創建的對象共同的屬性和方法。
A、類的定義
聲明一個Person類,這個類有3個成員:一個是屬性(包含name和age),一個是構造函數,一個是getPersonInfo方法,其定義如下所示。
class Person {private name: stringprivate age: numberconstructor(name: string, age: number) {this.name = name;this.age = age;}public getPersonInfo(): string {return `My name is ${this.name} and age is ${this.age}`;}
}
通過上面的Person類,我們可以定義一個人物Jacky并獲取他的基本信息,其定義如下:
let person1 = new Person('Jacky', 18); person1.getPersonInfo();
B、繼承
繼承就是子類繼承父類的特征和行為,使得子類具有父類相同的行為。TypeScript中允許使用繼承來擴展現有的類,對應的關鍵字為extends。
class Employee extends Person {private department: stringconstructor(name: string, age: number, department: string) {super(name, age);this.department = department;}public getEmployeeInfo(): string {return this.getPersonInfo() + ` and work in ${this.department}`;}
}
通過上面的Employee類,我們可以定義一個人物Tom,這里可以獲取他的基本信息,也可以獲取他的雇主信息,其定義如下:
et person2 = new Employee('Tom', 28, 'HuaWei'); person2.getPersonInfo(); person2.getEmployeeInfo();
在TypeScript中,有public、private、protected修飾符,其功能和具體使用場景大家可以參考TypeScript的相關學習資料,進行拓展學習。
C、模塊
隨著應用越來越大,通常要將代碼拆分成多個文件,即所謂的模塊(module)。模塊可以相互加載,并可以使用特殊的指令 export 和 import 來交換功能,從另一個模塊調用一個模塊的函數。
兩個模塊之間的關系是通過在文件級別上使用 import 和 export 建立的。模塊里面的變量、函數和類等在模塊外部是不可見的,除非明確地使用 export 導出它們。類似地,我們必須通過 import 導入其他模塊導出的變量、函數、類等。
導出
任何聲明(比如變量,函數,類,類型別名或接口)都能夠通過添加export關鍵字來導出,例如我們要把NewsData這個類導出,代碼示意如下:
export class NewsData {title: string;content: string;imagesUrl: Array<NewsFile>;source: string;constructor(title: string, content: string, imagesUrl: Array<NewsFile>, source: string) {this.title = title;this.content = content;this.imagesUrl = imagesUrl;this.source = source;}
}
導入
模塊的導入操作與導出一樣簡單。 可以使用以下 import形式之一來導入其它模塊中的導出內容。
import { NewsData } from '../common/bean/NewsData';
D、迭代器:當一個對象實現了Symbol.iterator屬性時,我們認為它是可迭代的。一些內置的類型如Array,Map,Set,String,Int32Array,Uint32Array等都具有可迭代性。
E、for..of 語句:會遍歷可迭代的對象,調用對象上的Symbol.iterator方法。 下面是在數組上使用for..of的簡單例子:
let someArray = [1, "string", false];for (let entry of someArray) {console.log(entry); // 1, "string", false}
F、for..of vs. for..in 語句:均可迭代一個列表,但是用于迭代的值卻不同:for..in迭代的是對象的鍵,而for..of則迭代的是對象的值。
let list = [4, 5, 6];for (let i in list) {console.log(i); // "0", "1", "2",
}for (let i of list) {console.log(i); // "4", "5", "6"
}
一、TypeScript、JavaScript、ArkTs的具體區別
TypeScript、JavaScript 和 ArkTS 是三種不同的編程語言,它們之間有明顯的區別和聯系。下面將詳細地描述它們的區別:
?
1、JavaScript:是一種高級的、解釋執行的編程語言,主要用于網頁開發。它的設計目的是為了在網頁瀏覽器中運行,控制網頁的行為。JavaScript 是一種動態類型語言,這意味著在運行時可以改變變量的類型。它具有單線程執行模型,意味著一次只能執行一個任務,這是它設計時的限制。
- 動態類型系統:變量在運行時可以改變類型。
- 單線程執行:一次只能執行一個任務。
- 基礎功能:包括控制 DOM、處理事件、執行異步操作等。
2、TypeScript:TypeScript 是 JavaScript 的一個超集,由 Microsoft 開發。它在 JavaScript 的基礎上增加了靜態類型系統,這意味著在編譯時就能檢查類型錯誤,提高了代碼的穩定性和可維護性。TypeScript 代碼需要被編譯成 JavaScript 才能在瀏覽器或 Node.js 中運行。
- 靜態類型系統:變量類型在編譯時確定,可以提供更早的錯誤檢查。
- 編譯為 JavaScript:TypeScript 代碼最終會被編譯成 JavaScript。
- 擴展 JavaScript:添加了類、接口、枚舉等結構化編程特性。
3、ArkTS:ArkTS 是專為鴻蒙OS(HarmonyOS)設計的全場景應用開發語言。它在 TypeScript 的基礎上進一步擴展,增加了聲明式UI、狀態管理等特性,以支持鴻蒙OS的組件化開發。ArkTS 也支持一次開發,多端部署,意味著在一個平臺上編寫代碼后,可以部署到不同的設備端。
- 聲明式UI:以聲明的方式定義用戶界面,使代碼更簡潔、易維護。
- 狀態管理:提供組件狀態、數據共享等機制,方便處理復雜應用狀態。
- 組件化開發:支持組件化、可配置的開發,降低開發難度,提高開發效率。
- 與 JavaScript/TypeScript 的兼容性:作為 TypeScript 的超集,ArkTS 兼容 JavaScript 和 TypeScript 的代碼和庫。
?