0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙語(yǔ)言TypeScript學(xué)習(xí)第15天:【聯(lián)合類型】

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-14 09:49 ? 次閱讀

1、TypeScript 接口

接口是一系列抽象方法的聲明,是一些方法特征的集合,這些方法都應(yīng)該是抽象的,需要由具體的類去實(shí)現(xiàn),然后第三方就可以通過(guò)這組抽象方法調(diào)用,讓具體的類執(zhí)行具體的方法。

TypeScript 接口定義如下:

interface interface_name { 
}

實(shí)例

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

customer 實(shí)現(xiàn)了接口 IPerson 的屬性和方法。鴻蒙學(xué)習(xí)文檔參考:[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 對(duì)象 ") 
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  對(duì)象 ") 
console.log(employee.firstName) 
console.log(employee.lastName)

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

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

JavaScript

var customer = {
    firstName: "Tom",
    lastName: "Hanks",
    sayHi: function () { return "Hi there"; }
};
console.log("Customer 對(duì)象 ");
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  對(duì)象 ");
console.log(employee.firstName);
console.log(employee.lastName);

輸出結(jié)果為:

Customer 對(duì)象
Tom
Hanks
Hi there
Employee  對(duì)象
Jim
Blakes

2、聯(lián)合類型和接口

以下實(shí)例演示了如何在接口中使用聯(lián)合類型:

TypeScript

interface RunOptions { 
    program:string; 
    commandline:string[]|string|(()= >string); 
} 
 
// commandline 是字符串
var options:RunOptions = {program:"test1",commandline:"Hello"}; 
console.log(options.commandline)  
 
// commandline 是字符串?dāng)?shù)組
options = {program:"test1",commandline:["Hello","World"]}; 
console.log(options.commandline[0]); 
console.log(options.commandline[1]);  
 
// commandline 是一個(gè)函數(shù)表達(dá)式
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 是字符串?dāng)?shù)組
options = { program: "test1", commandline: ["Hello", "World"] };
console.log(options.commandline[0]);
console.log(options.commandline[1]);
// commandline 是一個(gè)函數(shù)表達(dá)式
options = { program: "test1", commandline: function () { return "**Hello World**"; } };
var fn = options.commandline;
console.log(fn());

輸出結(jié)果為:

Hello
Hello
World
**Hello World**

3、接口和數(shù)組

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

設(shè)置元素為字符串類型:

實(shí)例

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

如果使用了其他類型會(huì)報(bào)錯(cuò):

實(shí)例

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

執(zhí)行后報(bào)錯(cuò)如下,顯示類型不一致:

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  
 
// 類型錯(cuò)誤,輸出  error TS2322: Type '"google"' is not assignable to type 'number'.
// agelist[2] = "google"

4、接口繼承

接口繼承就是說(shuō)接口可以通過(guò)其他接口來(lái)擴(kuò)展自己。

Typescript 允許接口繼承多個(gè)接口。

繼承使用關(guān)鍵字 extends。

單接口繼承語(yǔ)法格式:

Child_interface_name extends super_interface_name

多接口繼承語(yǔ)法格式:

Child_interface_name extends super_interface1_name, super_interface2_name,…,super_interfaceN_name

繼承的各個(gè)接口使用逗號(hào) , 分隔。

單繼承實(shí)例

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)復(fù)制

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

JavaScript

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

輸出結(jié)果為:

年齡:  27
喜歡的樂器:  Drums

多繼承實(shí)例

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);

輸出結(jié)果為:

value 1: 12 value 2: 23

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8372

    瀏覽量

    150561
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2295

    瀏覽量

    42635
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1958

    瀏覽量

    29912
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3613

    瀏覽量

    15975
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙TypeScript入門學(xué)習(xí)6:【條件語(yǔ)句】

    條件語(yǔ)句用于基于不同的條件來(lái)執(zhí)行不同的動(dòng)作。 TypeScript 條件語(yǔ)句是通過(guò)一條或多條語(yǔ)句的執(zhí)行結(jié)果(True 或 False)來(lái)決定執(zhí)行的代碼塊。
    的頭像 發(fā)表于 04-01 13:51 ?685次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b>入門<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>第</b>6<b class='flag-5'>天</b>:【條件語(yǔ)句】

    鴻蒙TypeScript學(xué)習(xí)7:【TypeScript 循環(huán)】

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

    鴻蒙TypeScript 開發(fā)學(xué)習(xí)9:【TypeScript Number】

    TypeScript 與 JavaScript 類似,支持 Number 對(duì)象。 Number 對(duì)象是原始數(shù)值的包裝對(duì)象。
    的頭像 發(fā)表于 04-07 18:02 ?723次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b> 開發(fā)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>第</b>9<b class='flag-5'>天</b>:【<b class='flag-5'>TypeScript</b> Number】

    鴻蒙語(yǔ)言TypeScript學(xué)習(xí)16:【類】

    TypeScript 支持面向?qū)ο蟮乃刑匦?,比?類、接口等。
    的頭像 發(fā)表于 04-15 09:29 ?901次閱讀
    <b class='flag-5'>鴻蒙語(yǔ)言</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>第</b>16<b class='flag-5'>天</b>:【類】

    鴻蒙TypeScript學(xué)習(xí)17:【對(duì)象】

    對(duì)象是包含一組鍵值對(duì)的實(shí)例。 值可以是標(biāo)量、函數(shù)、數(shù)組、對(duì)象等
    的頭像 發(fā)表于 04-15 15:33 ?582次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>第</b>17<b class='flag-5'>天</b>:【對(duì)象】

    鴻蒙TypeScript學(xué)習(xí)20:【模塊】

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

    鴻蒙語(yǔ)言ArkTS(更好的生產(chǎn)力與性能)

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

    【觸覺智能 Purple Pi OH 開發(fā)板體驗(yàn)】二、鴻蒙系統(tǒng)APP應(yīng)用例程學(xué)習(xí)HDC使用學(xué)習(xí)

    兩年開發(fā)鴻蒙APP也是使用的這兩種語(yǔ)言進(jìn)行開發(fā)。當(dāng)下看TypeScript程序還能說(shuō)勉強(qiáng)看懂,但是當(dāng)下開發(fā)程序就沒那個(gè)實(shí)力了,需要之后在抽時(shí)間學(xué)習(xí)。技術(shù)更新的也確實(shí)是快?。。?! 二、天
    發(fā)表于 08-31 11:13

    21學(xué)通C語(yǔ)言(6版)

    電子發(fā)燒友網(wǎng)站提供《21學(xué)通C語(yǔ)言(6版).txt》資料免費(fèi)下載
    發(fā)表于 03-10 17:07 ?0次下載

    鴻蒙TypeScript入門學(xué)習(xí)2TypeScript安裝】

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

    鴻蒙TypeScript開發(fā)入門學(xué)習(xí)3:【TS基礎(chǔ)類型

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

    鴻蒙TypeScript學(xué)習(xí)13:【元組】

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

    鴻蒙TypeScript學(xué)習(xí)14:【聯(lián)合類型

    聯(lián)合類型(Union Types)可以通過(guò)管道(|)將變量設(shè)置多種類型,賦值時(shí)可以根據(jù)設(shè)置的類型來(lái)賦值。
    的頭像 發(fā)表于 04-12 15:28 ?352次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>第</b>14<b class='flag-5'>天</b>:【<b class='flag-5'>聯(lián)合</b><b class='flag-5'>類型</b>】

    鴻蒙語(yǔ)言TypeScript學(xué)習(xí)18:【泛型】

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

    鴻蒙TypeScript學(xué)習(xí)21:【聲明文件】

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