HarmonyOS NEXT 開發之ArkTS基礎入門

威哥爱编程發表於2024-10-10

ArkTS 是 HarmonyOS NEXT 的開發語言,它基於 TypeScript 並進行了擴充套件和最佳化。以下是一些基礎語法知識點、示例用法及注意事項。

一、ArkTS 簡介

ArkTS 是一種基於 TypeScript 的程式語言,主要用於 HarmonyOS 應用的 UI 介面和業務邏輯開發。它在 TypeScript 的基礎上,進行了一些針對 HarmonyOS 系統的最佳化和定製。

二、建立 ArkTS 專案

  1. 開啟 DevEco Studio:點選 File -> New -> Project,選擇適合的模板作為專案型別。
  2. 輸入專案名稱和包名:然後點選 Next。
  3. 完成專案建立:點選 Finish,DevEco Studio 將自動建立一個 ArkTS 專案。

三、編寫 ArkTS 程式碼

  1. 編寫 UI 介面:ArkTS 專案的 UI 介面使用 XML 檔案定義,可以在 resources/base/layout 目錄下找到應用的佈局檔案。
  2. 編寫業務邏輯:ArkTS 專案的業務邏輯程式碼使用 TypeScript 編寫,可以在 src/main/js/default 目錄下找到應用的 TypeScript 程式碼。
  3. 新增資原始檔:ArkTS 專案的圖片、字串等資原始檔存放在 resources/base 目錄下。
  4. 配置檔案:ArkTS 專案的配置資訊存放在 config.json 檔案中。

四、ArkTS 關鍵語法和使用示例

1. 型別註解

型別註解是 TypeScript 的核心特性之一,它允許在變數、函式引數和函式返回值上新增型別資訊。

let message: string = "Hello, HarmonyOS";
let count: number = 10;
function greet(name: string): string {
    return `Hello, ${name}`;
}
let greeting: string = greet("HarmonyOS");
2. 介面

介面是 TypeScript 中定義複雜型別的一種方式,它可以描述一個物件的結構。

interface Person {
    name: string;
    age: number;
}
function showPersonInfo(person: Person) {
    console.log(`Name: ${person.name}, Age: ${person.age}`);
}
let person: Person = { name: "John", age: 30 };
showPersonInfo(person);
3. 類

類是 TypeScript 中定義物件型別的一種方式,支援繼承和多型。

class Animal {
    constructor(public name: string) {}
    speak() {
        console.log(`${this.name} makes a noise.`);
    }
}

class Dog extends Animal {
    speak() {
        console.log(`${this.name} barks.`);
    }
}

let dog = new Dog("Bingo");
dog.speak(); // Bingo barks.
4. 繼承

繼承允許一個類(子類)繼承另一個類(父類)的屬性和方法。

class Base {
    commonMethod() {
        console.log("Common Method");
    }
}

class Derived extends Base {
    derivedMethod() {
        console.log("Derived Method");
    }
}

let derived = new Derived();
derived.commonMethod(); // Common Method
derived.derivedMethod(); // Derived Method
5. 泛型

泛型允許在定義函式、介面或類時使用型別引數。

function identity<T>(arg: T): T {
    return arg;
}

let output = identity<string>("Hello, world!");
console.log(output); // "Hello, world!"
6. 模組

模組是 TypeScript 中組織程式碼的一種方式,支援匯入和匯出。

// file1.ts
export function sayHello(name: string) {
    console.log(`Hello, ${name}`);
}

// file2.ts
import { sayHello } from "./file1";
sayHello("TypeScript");
7. 裝飾器

裝飾器是一種特殊型別的宣告,它可以被附加到類、方法、屬性或引數上。

function log(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
    console.log(`Property ${propertyKey} is being called`);
}

class Person {
    @log
    name() {
        return "John";
    }
}

let person = new Person();
person.name(); // Property name is being called
8. 非同步程式設計

非同步程式設計允許你編寫非阻塞的程式碼。

async function fetchData() {
    return await fetch("https://api.example.com/data");
}

fetchData().then(data => console.log(data));
9. 型別別名

型別別名允許你為型別定義一個新名稱。

type Name = string;
type Coordinates = { x: number; y: number };

let name: Name = "Alice";
let coordinates: Coordinates = { x: 10, y: 20 };
10. 型別保護

型別保護是一種檢查變數型別的方法,可以在編譯時確保變數具有正確的型別。

type Shape = Circle | Square;
function getArea(shape: Shape): number {
    if (shape instanceof Circle) {
        return Math.PI * shape.radius ** 2;
    } else {
        return shape.width * shape.height;
    }
}
11. 列舉

列舉是一種特殊的型別,它允許你為一組有限的值定義友好的名字。

enum Direction {
    Up,
    Down,
    Left,
    Right,
}

function move(direction: Direction): void {
    console.log(`Moving in direction: ${Direction[direction]}`);
}
move(Direction.Up);
12. 對映型別

對映型別允許你根據現有型別建立新的型別。

type ReadonlyPoint = Readonly<Point>;
let readonlyPoint: ReadonlyPoint = { x: 10, y: 20 };
readonlyPoint.x = 30; // Error: Cannot assign to 'x' because it is a read-only property

五、注意事項

  1. 型別檢查:ArkTS 在編譯時進行型別檢查,可以在程式碼執行前發現和修復錯誤。
  2. IDE 支援:由於有了型別資訊,IDE 可以提供更好的自動完成、導航和重構功能。
  3. 模組化程式設計:ArkTS 支援模組化程式設計,可以將程式碼組織成模組,以便於管理和維護。

透過以上示例和注意事項,你可以更好地理解和掌握 ArkTS 的基礎語法和使用方式。

相關文章