typescript基礎(chǔ)學(xué)習(xí)二(接口)

TypeScript 接口

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

TypeScript 接口定義如下:

interface interface_name { }

實(shí)例

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

customer 實(shí)現(xiàn)了接口 IPerson 的屬性和方法。

TypeScript

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ì)象TomHanksHi thereEmployee? 對(duì)象JimBlakes

聯(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é)果為:

HelloHelloWorld**Hello World**

接口和數(shù)組

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

TypeScript

interface namelist {

? [index:number]:string }

var list2:namelist = ["John",1,"Bran"] / 錯(cuò)誤元素 1 不是 string 類型interface ages {

? [index:string]:number }

var agelist:ages; agelist["John"] = 15? // 正確 agelist[2] = "nine"? // 錯(cuò)誤

接口繼承

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

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

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

單接口繼承語法格式:

Child_interface_name extends super_interface_name

多接口繼承語法格式:

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)

編譯以上代碼,得到以下 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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 慕課網(wǎng)@JoJozhai 老師 TypeScript入門課程分享 TypeScript入門 ES5,ES6,JS,...
    shangpudxd閱讀 10,630評(píng)論 0 22
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,799評(píng)論 0 3
  • TypeScript簡(jiǎn)介: 微軟開發(fā) javascript的超集 遵循ES6腳本語言的規(guī)范 添加了遵循ES6的語...
    咖啡浮點(diǎn)閱讀 928評(píng)論 0 3
  • JavaScript Style Guide 用更合理的方式寫 JavaScript <a name="table...
    哪吒鬧海全靠浪閱讀 492評(píng)論 0 0
  • 夜里一點(diǎn)多,醒來。從10點(diǎn)半幫女兒喂下消炎藥(扁桃體發(fā)炎)以后,心里就開始不踏實(shí),害怕夜里發(fā)燒,睡前量了量...
    蝸牛_b527閱讀 129評(píng)論 0 1

友情鏈接更多精彩內(nèi)容