ArkTS基礎(chǔ)語法與HarmonyOS NEXT開發(fā)入門

2024-12-03 14:06 更新

ArkTS 是 HarmonyOS NEXT 的開發(fā)語言,它基于 TypeScript 并進(jìn)行了擴(kuò)展和優(yōu)化。以下是一些基礎(chǔ)語法知識(shí)點(diǎn)、示例用法及注意事項(xiàng)。

一、ArkTS 簡介

ArkTS 是一種基于 TypeScript 的編程語言,主要用于 HarmonyOS 應(yīng)用的 UI 界面和業(yè)務(wù)邏輯開發(fā)。它在 TypeScript 的基礎(chǔ)上,進(jìn)行了一些針對(duì) HarmonyOS 系統(tǒng)的優(yōu)化和定制。

二、創(chuàng)建 ArkTS 項(xiàng)目

  1. 打開 DevEco Studio:點(diǎn)擊 File -> New -> Project,選擇適合的模板作為項(xiàng)目類型。
  2. 輸入項(xiàng)目名稱和包名:然后點(diǎn)擊 Next。
  3. 完成項(xiàng)目創(chuàng)建:點(diǎn)擊 Finish,DevEco Studio 將自動(dòng)創(chuàng)建一個(gè) ArkTS 項(xiàng)目。

三、編寫 ArkTS 代碼

  1. 編寫 UI 界面:ArkTS 項(xiàng)目的 UI 界面使用 XML 文件定義,可以在 resources/base/layout 目錄下找到應(yīng)用的布局文件。
  2. 編寫業(yè)務(wù)邏輯:ArkTS 項(xiàng)目的業(yè)務(wù)邏輯代碼使用 TypeScript 編寫,可以在 src/main/js/default 目錄下找到應(yīng)用的 TypeScript 代碼。
  3. 添加資源文件:ArkTS 項(xiàng)目的圖片、字符串等資源文件存放在 resources/base 目錄下。
  4. 配置文件:ArkTS 項(xiàng)目的配置信息存放在 config.json 文件中。

四、ArkTS 關(guān)鍵語法和使用示例

1. 類型注解

類型注解是 TypeScript 的核心特性之一,它允許在變量、函數(shù)參數(shù)和函數(shù)返回值上添加類型信息。

  1. let message: string = "Hello, HarmonyOS";
  2. let count: number = 10;
  3. function greet(name: string): string {
  4. return `Hello, ${name}`;
  5. }
  6. let greeting: string = greet("HarmonyOS");

2. 接口

接口是 TypeScript 中定義復(fù)雜類型的一種方式,它可以描述一個(gè)對(duì)象的結(jié)構(gòu)。

  1. interface Person {
  2. name: string;
  3. age: number;
  4. }
  5. function showPersonInfo(person: Person) {
  6. console.log(`Name: ${person.name}, Age: ${person.age}`);
  7. }
  8. let person: Person = { name: "John", age: 30 };
  9. showPersonInfo(person);

3. 類

類是 TypeScript 中定義對(duì)象類型的一種方式,支持繼承和多態(tài)。

  1. class Animal {
  2. constructor(public name: string) {}
  3. speak() {
  4. console.log(`${this.name} makes a noise.`);
  5. }
  6. }
  7. class Dog extends Animal {
  8. speak() {
  9. console.log(`${this.name} barks.`);
  10. }
  11. }
  12. let dog = new Dog("Bingo");
  13. dog.speak(); // Bingo barks.

4. 繼承

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

  1. class Base {
  2. commonMethod() {
  3. console.log("Common Method");
  4. }
  5. }
  6. class Derived extends Base {
  7. derivedMethod() {
  8. console.log("Derived Method");
  9. }
  10. }
  11. let derived = new Derived();
  12. derived.commonMethod(); // Common Method
  13. derived.derivedMethod(); // Derived Method

5. 泛型

泛型允許在定義函數(shù)、接口或類時(shí)使用類型參數(shù)。

  1. function identity<T>(arg: T): T {
  2. return arg;
  3. }
  4. let output = identity<string>("Hello, world!");
  5. console.log(output); // "Hello, world!"

6. 模塊

模塊是 TypeScript 中組織代碼的一種方式,支持導(dǎo)入和導(dǎo)出。

  1. // file1.ts
  2. export function sayHello(name: string) {
  3. console.log(`Hello, ${name}`);
  4. }
  5. // file2.ts
  6. import { sayHello } from "./file1";
  7. sayHello("TypeScript");

7. 裝飾器

裝飾器是一種特殊類型的聲明,它可以被附加到類、方法、屬性或參數(shù)上。

  1. function log(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
  2. console.log(`Property ${propertyKey} is being called`);
  3. }
  4. class Person {
  5. @log
  6. name() {
  7. return "John";
  8. }
  9. }
  10. let person = new Person();
  11. person.name(); // Property name is being called

8. 異步編程

異步編程允許你編寫非阻塞的代碼。

  1. async function fetchData() {
  2. return await fetch("https://api.example.com/data");
  3. }
  4. fetchData().then(data => console.log(data));

9. 類型別名

類型別名允許你為類型定義一個(gè)新名稱。

  1. type Name = string;
  2. type Coordinates = { x: number; y: number };
  3. let name: Name = "Alice";
  4. let coordinates: Coordinates = { x: 10, y: 20 };

10. 類型保護(hù)

類型保護(hù)是一種檢查變量類型的方法,可以在編譯時(shí)確保變量具有正確的類型。

  1. type Shape = Circle | Square;
  2. function getArea(shape: Shape): number {
  3. if (shape instanceof Circle) {
  4. return Math.PI * shape.radius ** 2;
  5. } else {
  6. return shape.width * shape.height;
  7. }
  8. }

11. 枚舉

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

  1. enum Direction {
  2. Up,
  3. Down,
  4. Left,
  5. Right,
  6. }
  7. function move(direction: Direction): void {
  8. console.log(`Moving in direction: ${Direction[direction]}`);
  9. }
  10. move(Direction.Up);

12. 映射類型

映射類型允許你根據(jù)現(xiàn)有類型創(chuàng)建新的類型。

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

五、注意事項(xiàng)

  1. 類型檢查:ArkTS 在編譯時(shí)進(jìn)行類型檢查,可以在代碼運(yùn)行前發(fā)現(xiàn)和修復(fù)錯(cuò)誤。
  2. IDE 支持:由于有了類型信息,IDE 可以提供更好的自動(dòng)完成、導(dǎo)航和重構(gòu)功能。
  3. 模塊化編程:ArkTS 支持模塊化編程,可以將代碼組織成模塊,以便于管理和維護(hù)。

通過以上示例和注意事項(xiàng),你可以更好地理解和掌握 ArkTS 的基礎(chǔ)語法和使用方式。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)