精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙語言TypeScript學習第15天:【聯合類型】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-14 09:49 ? 次閱讀

1、TypeScript 接口

接口是一系列抽象方法的聲明,是一些方法特征的集合,這些方法都應該是抽象的,需要由具體的類去實現,然后第三方就可以通過這組抽象方法調用,讓具體的類執行具體的方法。

TypeScript 接口定義如下:

interface interface_name { 
}

實例

以下實例中,我們定義了一個接口 IPerson,接著定義了一個變量 customer,它的類型是 IPerson。

customer 實現了接口 IPerson 的屬性和方法。鴻蒙學習文檔參考:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

TypeScript

搜狗高速瀏覽器截圖20240326151547.png

HarmonyOSOpenHarmony鴻蒙文檔紫料
+mau123789是v直接拿

interface IPerson { 
    firstName:string, 
    lastName:string, 
    sayHi: ()= >string 
} 
 
var customer:IPerson = { 
    firstName:"Tom",
    lastName:"Hanks", 
    sayHi: ():string = >{return "Hi there"} 
} 
 
console.log("Customer 對象 ") 
console.log(customer.firstName) 
console.log(customer.lastName) 
console.log(customer.sayHi())  
 
var employee:IPerson = { 
    firstName:"Jim",
    lastName:"Blakes", 
    sayHi: ():string = >{return "Hello!!!"} 
} 
 
console.log("Employee  對象 ") 
console.log(employee.firstName) 
console.log(employee.lastName)

需要注意接口不能轉換為 JavaScript。 它只是 TypeScript 的一部分。

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var customer = {
    firstName: "Tom",
    lastName: "Hanks",
    sayHi: function () { return "Hi there"; }
};
console.log("Customer 對象 ");
console.log(customer.firstName);
console.log(customer.lastName);
console.log(customer.sayHi());
var employee = {
    firstName: "Jim",
    lastName: "Blakes",
    sayHi: function () { return "Hello!!!"; }
};
console.log("Employee  對象 ");
console.log(employee.firstName);
console.log(employee.lastName);

輸出結果為:

Customer 對象
Tom
Hanks
Hi there
Employee  對象
Jim
Blakes

2、聯合類型和接口

以下實例演示了如何在接口中使用聯合類型:

TypeScript

interface RunOptions { 
    program:string; 
    commandline:string[]|string|(()= >string); 
} 
 
// commandline 是字符串
var options:RunOptions = {program:"test1",commandline:"Hello"}; 
console.log(options.commandline)  
 
// commandline 是字符串數組
options = {program:"test1",commandline:["Hello","World"]}; 
console.log(options.commandline[0]); 
console.log(options.commandline[1]);  
 
// commandline 是一個函數表達式
options = {program:"test1",commandline:()= >{return "**Hello World**";}}; 
 
var fn:any = options.commandline; 
console.log(fn());

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

// commandline 是字符串
var options = { program: "test1", commandline: "Hello" };
console.log(options.commandline);
// commandline 是字符串數組
options = { program: "test1", commandline: ["Hello", "World"] };
console.log(options.commandline[0]);
console.log(options.commandline[1]);
// commandline 是一個函數表達式
options = { program: "test1", commandline: function () { return "**Hello World**"; } };
var fn = options.commandline;
console.log(fn());

輸出結果為:

Hello
Hello
World
**Hello World**

3、接口和數組

接口中我們可以將數組的索引值和元素設置為不同類型,索引值可以是數字或字符串。

設置元素為字符串類型:

實例

interface namelist { 
   [index:number]:string 
} 
 
// 類型一致,正確
var list2:namelist = ["Google","Runoob","Taobao"]
// 錯誤元素 1 不是 string 類型
// var list2:namelist = ["Runoob",1,"Taobao"]

如果使用了其他類型會報錯:

實例

interface namelist { 
   [index:number]:string 
} 
 
// 類型一致,正確
// var list2:namelist = ["Google","Runoob","Taobao"]
// 錯誤元素 1 不是 string 類型
var list2:namelist = ["John",1,"Bran"]

執行后報錯如下,顯示類型不一致:

test.ts:8:30 - error TS2322: Type 'number' is not assignable to type 'string'.

8 var list2:namelist = ["John",1,"Bran"]
                               ~

  test.ts:2:4
    2    [index:number]:string
         ~~~~~~~~~~~~~~~~~~~~~
    The expected type comes from this index signature.


Found 1 error.

TypeScript

interface ages { 
   [index:string]:number 
} 
 
var agelist:ages; 
 // 類型正確 
agelist["runoob"] = 15  
 
// 類型錯誤,輸出  error TS2322: Type '"google"' is not assignable to type 'number'.
// agelist[2] = "google"

4、接口繼承

接口繼承就是說接口可以通過其他接口來擴展自己。

Typescript 允許接口繼承多個接口。

繼承使用關鍵字 extends。

單接口繼承語法格式:

Child_interface_name extends super_interface_name

多接口繼承語法格式:

Child_interface_name extends super_interface1_name, super_interface2_name,…,super_interfaceN_name

繼承的各個接口使用逗號 , 分隔。

單繼承實例

TypeScript

interface Person { 
   age:number 
} 
 
interface Musician extends Person { 
   instrument:string 
} 
 
var drummer = < Musician >{}; 
drummer.age = 27 
drummer.instrument = "Drums" 
console.log("年齡:  "+drummer.age)
console.log("喜歡的樂器:  "+drummer.instrument)復制

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var drummer = {};
drummer.age = 27;
drummer.instrument = "Drums";
console.log("年齡:  " + drummer.age);
console.log("喜歡的樂器:  " + drummer.instrument);

輸出結果為:

年齡:  27
喜歡的樂器:  Drums

多繼承實例

TypeScript

interface IParent1 { 
    v1:number 
} 
 
interface IParent2 { 
    v2:number 
} 
 
interface Child extends IParent1, IParent2 { } 
var Iobj:Child = { v1:12, v2:23} 
console.log("value 1: "+Iobj.v1+" value 2: "+Iobj.v2)

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var Iobj = { v1: 12, v2: 23 };
console.log("value 1: " + Iobj.v1 + " value 2: " + Iobj.v2);

輸出結果為:

value 1: 12 value 2: 23

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8496

    瀏覽量

    150834
  • 鴻蒙
    +關注

    關注

    57

    文章

    2307

    瀏覽量

    42738
  • HarmonyOS
    +關注

    關注

    79

    文章

    1967

    瀏覽量

    30014
  • OpenHarmony
    +關注

    關注

    25

    文章

    3658

    瀏覽量

    16146
收藏 人收藏

    評論

    相關推薦

    鴻蒙TypeScript入門學習6:【條件語句】

    條件語句用于基于不同的條件來執行不同的動作。 TypeScript 條件語句是通過一條或多條語句的執行結果(True 或 False)來決定執行的代碼塊。
    的頭像 發表于 04-01 13:51 ?712次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b>入門<b class='flag-5'>學習</b><b class='flag-5'>第</b>6<b class='flag-5'>天</b>:【條件語句】

    鴻蒙TypeScript學習7:【TypeScript 循環】

    有的時候,我們可能需要多次執行同一塊代碼。一般情況下,語句是按順序執行的:函數中的第一個語句先執行,接著是第二個語句,依此類推。 編程語言提供了更為復雜執行路徑的多種控制結構。
    的頭像 發表于 04-02 14:28 ?803次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>7<b class='flag-5'>天</b>:【<b class='flag-5'>TypeScript</b> 循環】

    鴻蒙TypeScript 開發學習9:【TypeScript Number】

    TypeScript 與 JavaScript 類似,支持 Number 對象。 Number 對象是原始數值的包裝對象。
    的頭像 發表于 04-07 18:02 ?760次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b> 開發<b class='flag-5'>學習</b><b class='flag-5'>第</b>9<b class='flag-5'>天</b>:【<b class='flag-5'>TypeScript</b> Number】

    鴻蒙語言TypeScript學習16:【類】

    TypeScript 支持面向對象的所有特性,比如 類、接口等。
    的頭像 發表于 04-15 09:29 ?965次閱讀
    <b class='flag-5'>鴻蒙語言</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>16<b class='flag-5'>天</b>:【類】

    鴻蒙TypeScript學習17:【對象】

    對象是包含一組鍵值對的實例。 值可以是標量、函數、數組、對象等
    的頭像 發表于 04-15 15:33 ?624次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>17<b class='flag-5'>天</b>:【對象】

    鴻蒙TypeScript學習20:【模塊】

    TypeScript 模塊的設計理念是可以更換的組織代碼。 模塊是在其自身的作用域里執行,并不是在全局作用域,這意味著定義在模塊里面的變量、函數和類等在模塊外部是不可見的,除非明確地使用 export 導出它們。類似地,我們必須通過 import 導入其他模塊導出的變量、函數、類等。
    的頭像 發表于 04-18 15:19 ?687次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>20<b class='flag-5'>天</b>:【模塊】

    鴻蒙語言ArkTS(更好的生產力與性能)

    ArkTS是鴻蒙生態的應用開發語言 ArkTS提供了聲明式UI范式、狀態管理支持等相應的能力,讓開發者可以以更簡潔、更自然的方式開發應用。 同時,它在保持TypeScript(簡稱TS)基本語法
    發表于 02-17 15:56

    【觸覺智能 Purple Pi OH 開發板體驗】二、鴻蒙系統APP應用例程學習HDC使用學習

    兩年開發鴻蒙APP也是使用的這兩種語言進行開發。當下看TypeScript程序還能說勉強看懂,但是當下開發程序就沒那個實力了,需要之后在抽時間學習。技術更新的也確實是快啊!!! 二、天
    發表于 08-31 11:13

    21學通C語言(6版)

    電子發燒友網站提供《21學通C語言(6版).txt》資料免費下載
    發表于 03-10 17:07 ?0次下載

    鴻蒙TypeScript入門學習2TypeScript安裝】

    本文介紹 TypeScript 環境的安裝。 我們需要使用到 npm 工具安裝,如果你還不了解 npm,可以參考我之前文檔。
    的頭像 發表于 03-27 15:22 ?466次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b>入門<b class='flag-5'>學習</b><b class='flag-5'>第</b>2<b class='flag-5'>天</b>【<b class='flag-5'>TypeScript</b>安裝】

    鴻蒙TypeScript開發入門學習3:【TS基礎類型

    任意值是 TypeScript 針對編程時類型不明確的變量使用的一種數據類型,它常用于以下三種情況。
    的頭像 發表于 03-28 15:02 ?488次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b>開發入門<b class='flag-5'>學習</b><b class='flag-5'>第</b>3<b class='flag-5'>天</b>:【TS基礎<b class='flag-5'>類型</b>】

    鴻蒙TypeScript學習13:【元組】

    元組中允許存儲不同類型的元素,元組可以作為參數傳遞給函數。
    的頭像 發表于 04-11 14:43 ?452次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>13<b class='flag-5'>天</b>:【元組】

    鴻蒙TypeScript學習14:【聯合類型

    聯合類型(Union Types)可以通過管道(|)將變量設置多種類型,賦值時可以根據設置的類型來賦值。
    的頭像 發表于 04-12 15:28 ?412次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>14<b class='flag-5'>天</b>:【<b class='flag-5'>聯合</b><b class='flag-5'>類型</b>】

    鴻蒙語言TypeScript學習18:【泛型】

    泛型(Generics)是一種編程語言特性,允許在定義函數、類、接口等時使用占位符來表示類型,而不是具體的類型
    的頭像 發表于 04-16 14:56 ?339次閱讀
    <b class='flag-5'>鴻蒙語言</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>18<b class='flag-5'>天</b>:【泛型】

    鴻蒙TypeScript學習21:【聲明文件】

    TypeScript 作為 JavaScript 的超集,在開發過程中不可避免要引用其他第三方的 JavaScript 的庫。
    的頭像 發表于 04-19 15:02 ?536次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b>21<b class='flag-5'>天</b>:【聲明文件】