鴻蒙極速入門(三)-TypeScript語言簡介

来源:https://www.cnblogs.com/anywherego/archive/2023/10/25/17787809.html
-Advertisement-
Play Games

ArkTS是HarmonyOS優選的主力應用開發語言。ArkTS圍繞應用開發在TypeScript(簡稱TS)生態基礎上做了進一步擴展,繼承了TS的所有特性,是TS的超集。因此,在學習ArkTS語言之前,需要先瞭解一下TS語言的基礎知識。 一、基礎類型 1. 數字類型-number 雙精度 64 位 ...


ArkTS是HarmonyOS優選的主力應用開發語言。ArkTS圍繞應用開發在TypeScript(簡稱TS)生態基礎上做了進一步擴展,繼承了TS的所有特性,是TS的超集。因此,在學習ArkTS語言之前,需要先瞭解一下TS語言的基礎知識。

一、基礎類型

1. 數字類型-number

雙精度 64 位浮點值。它可以用來表示整數和分數

let decLiteral: number = 6;
2. 字元串類型-string

一個字元系列,使用單引號(')或雙引號(")來表示字元串類型。反引號(`)來定義多行文本和內嵌表達式。

let name: string = "Runoob";
let words: string = `您好,今年是 ${ name } 發佈 ${ years + 1} 周年`;
3. 布爾類型-boolean

表示邏輯值:true 和 false。

let flag: boolean = true;
4. 枚舉-enum

枚舉類型用於定義數值集合。

enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
5. 數組
let arr: number[] = [1, 2]; // 在元素類型後面加上[]
let arr: Array<number> = [1, 2]; // 使用數組泛型

6. 元組

元組類型用來表示已知元素數量和類型的數組,各元素的類型不必相同,對應位置的類型需要相同。

let x: [string, number];
x = ['Runoob', 1];

7. 特殊類型-any、null、undefined

Any

任意值是 TypeScript 針對編程時類型不明確的變數使用的一種數據類型,變數的值會動態改變時使用

let x: any = 1;    // 數字類型
x = 'I am who I am';    // 字元串類型
x = false;    // 布爾類型
null

null是一個只有一個值的特殊類型。表示一個空對象引用。用 typeof 檢測 null 返回是 object。

var person = null;           // 值為 null(空), 但類型為object
undefined

undefined 是一個沒有設置值的變數。typeof 一個沒有值的變數會返回 undefined。

var person;                  // 值為 undefined, 類型是undefined
var person = undefined;     // 值為 undefined, 類型為 undefined
undefined 和 null 的區別

null 和 undefined 的值相等,但類型不等:

typeof undefined             // undefined
typeof null                  // object
null === undefined           // false (類型不等)
null == undefined            // true (值相等)

二、變數

var [變數名] : [類型] = 值;

var uname = "Runoob";
let password = "123456";

註意:Swift 中,var 為變數,let 為常量;而 JavaScript 中,var 為函數作用域變數,let 為塊作用域變數,const 為常量。

三、常量

const PI = 3.141592653589793;

四、流程式控制制語句

// if
var num:number = 2 
if(num > 0) { 
    console.log(num+" 是正數") 
} else if(num < 0) { 
    console.log(num+" 是負數") 
} else { 
    console.log(num+" 不是正數也不是負數") 
}

// switch
var grade:string = "A"; 
switch(grade) { 
    case "A": { 
        console.log("優"); 
        break; 
    } 
    case "B": { 
        console.log("良"); 
        break; 
    } 
    case "C": {
        console.log("及格"); 
        break;    
    } 
    case "D": { 
        console.log("不及格"); 
        break; 
    }  
    default: { 
        console.log("非法輸入"); 
        break;              
    } 
}

// for
var num:number = 5; 
var i:number; 
var factorial = 1; 
for(i = num;i>=1;i--) {
   factorial *= i;
}

// for in
var j:any; 
var n:any = "a b c";
for(j in n) {
    console.log(n[j]);
}

// for of
let someArray = [1, "string", false];
for (let entry of someArray) {
    console.log(entry); // 1, "string", false
}

// forEach
let list = [4, 5, 6];
list.forEach((val, idx, array) => {
    // val: 當前值
    // idx:當前index
    // array: Array
});

// every
let list = [4, 5, 6];
list.every((val, idx, array) => {
    // val: 當前值
    // idx:當前index
    // array: Array
    return true; // Continues
    // Return false will quit the iteration
});

// while
var num:number = 5; 
var factorial:number = 1; 
while(num >=1) { 
    factorial = factorial * num; 
    num--; 
} 

// do while
var n:number = 10;
do { 
    console.log(n); 
    n--; 
} while(n>=0);

在迴圈語句中支持breakcontinue關鍵字,跳出或繼續迴圈

五、函數

語法格式:

// 預設
function function_name(){}
// 帶返回值,:後的T為返回值類型
function function_name(): T{}
// 帶參函數,支持預設值
function function_name(param1[:type],param2[:type] = default_value) {}
// 帶剩餘參數,函數的最後一個命名參數 restOfName 以 ... 為首碼,它將成為一個由剩餘參數組成的數組
function buildName(firstName: string, ...restOfName: string[]) {
    return firstName + " " + restOfName.join(" ");
}
// 匿名函數
var res = function( [arguments] ) { ... }
// 構造函數
var res = new Function ([arg1[, arg2[, ...argN]],] functionBody)
// Lambda 函數
( [param1, param2,…param n] )=>statement;

六、類( Class )

語法格式:

class class_name { 
    // 類作用域
}

普通

示例:

class Car { 
    // 欄位 
    engine:string; 
 
    // 構造函數 
    constructor(engine:string) { 
        this.engine = engine 
    }  
 
    // 方法 
    disp():void { 
        console.log("發動機為 :   "+this.engine) 
    } 
}

var obj = new Car("Engine 1")
obj.field_name // 訪問屬性
obj.function_name() // 訪問方法

繼承

使用extends作為關鍵字:

class Shape { 
   Area:number 
   
   constructor(a:number) { 
      this.Area = a 
   } 
   
   test() {}
} 
 
class Circle extends Shape { 
   disp():void { 
      console.log("圓的面積:  "+this.Area) 
   } 
   
   test() {
    super.test() // 重寫父類方法
   }
}
  
var obj = new Circle(223); 
obj.disp();
obj.test;

七、介面

語法定義:

interface interface_name { 
}

普通

interface IPerson { 
    firstName:string, 
    lastName:string, 
    sayHi: ()=>string 
} 
 
var customer:IPerson = { 
    firstName:"Tom",
    lastName:"Hanks", 
    sayHi: ():string =>{return "Hi there"} 
} 

介面繼承

介面可以通過關鍵字extends來繼承其他介面以擴展自己。

單繼承
interface Person { 
   age:number 
} 
 
interface Musician extends Person { 
   instrument:string 
} 

var drummer = <Musician>{}; 
drummer.age = 27 
drummer.instrument = "Drums" 
多繼承
interface IParent1 { 
    v1:number 
} 
 
interface IParent2 { 
    v2:number 
} 
 
interface Child extends IParent1, IParent2 { } 
var Iobj:Child = { v1:12, v2:23} 

八、導入( Import )

通過關鍵字import導入其他文件

import someInterfaceRef = require("./SomeInterface");

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 每次重裝系統後,都要重新安裝軟體,配置環境變數,極為繁瑣。故作環境環境變數備份,常用軟體恢復記錄,前提是你的軟體要安裝在非系統盤,D/E盤等 軟體安裝在非系統盤 開發軟體安裝在非系統盤,建好目錄。重裝系統後,只是重置系統盤,所以這些軟體不需要重新安裝。 譬如 java 相關目錄: PS D:\jav ...
  • 內置參考電壓的使用 應用筆記 前言 CH32V/F 系列單片機能夠在一定的電壓範圍內進行工作,以 CH32V203C8T6 晶元為例,在不使用 USB 外設時,最低工作電壓能夠達到 2.4V。較為寬泛的工作電壓,允許單片機直接使用電池供電,但由於 CH32V203C8T6 晶元沒有獨立的 Vref ...
  • 1、前言 《中庸》有:“九層之台,起於壘土” 之說,那麼對於我們搞技術的人,同樣如此! 對於Linux記憶體管理,你可以說沒有留意過,但是它存在於我們日常開發的方方面面,你所打開的文件,你所創建的變數,你所運行的程式,無不以此為基礎,它可以說是操作系統的基石;只是底層被封裝的太好了,以至於我們在做開發 ...
  • 1. 線程 1.1. MySQL服務端是多線程軟體。它的每個組件都使用線程 1.2. 每個線程至少有兩個唯一標識符 1.2.1. 操作系統線程ID 1.2.2. MySQL內部線程ID 2. 對象類型 2.1. OBJECT_TYPE列 2.2. EVENT 2.3. FUNCTION 2.4. P ...
  • redis面試提問 轉載:https://blog.csdn.net/uuqaz/article/details/127088333 Redis 是面試中繞不過的檻,只要在簡歷中寫了用過 Redis,肯定逃不過。今天我們就來模擬一下麵試官在 Redis 這個話題上是如何一步一步深入,全面考察候選人對 ...
  • YARN(Yet Another Resource Negotiator)是 Hadoop 生態系統中的資源調度器,主要用於資源管理和作業調度。YARN 自身具備隊列管理功能,通過對 YARN 資源隊列進行配置和管理,實現集群資源的分配,以滿足不同應用和用戶的需求。YARN 的引入為集群在利用率、資 ...
  • 什麼是成本 MySQL中一條SQL語句的執行成本包含兩個部分: I/O成本:從磁碟中載入數據(頁)到記憶體的的過程中消耗的時間稱為I/O成本。 CPU成本:讀取記錄以及檢測記錄是否滿足搜索條件、對結果集進行排序等操作,消耗的時間稱為CPU成本。 MySQL預設規定讀取一個頁面的I/O成本是1.0,讀取 ...
  • 1.背景概述 在一次主從複製架構中,由於主節點binlog損壞,導致從節點無法正常同步數據,只能重做從節點;因此使用MySQL 8.0.17開始提供的clone技術進行恢復,恢復後的2天都發生了主從報錯數據衝突。 通過解析binlog發現,同一時刻主從節點都在執行同一條語句,因此詢問業務是否在主從節 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...