TypeScript 類實現介面
TypeScript類實現介面與C#或者Java等語言非常類似,用來強制一個類去符合某種契約。
程式碼例項如下:
[typescript] 純文字檢視 複製程式碼interface Itest { webName: string; } class Antzone implements Itest { webName: "螞蟻部落"; age:4; constructor() { } }
在TypeScript 介面簡介一章節最後介紹過,介面只規定約束,並沒有具體實現。
如果類實現某一介面,那麼就可以實現介面中的成員,上面的程式碼中,將webName賦值為字串"螞蟻部落"。
又因為介面是描述資料的結構的,所以實現介面的類沒必要實現介面中的成員。
程式碼例項如下:
[typescript] 純文字檢視 複製程式碼interface Itest { webName: string; show(address: string); } class Antzone implements Itest { webName; age:4; show(address:string){ console.log(address); } constructor() { } }
上面的程式碼中,webName並沒有被實現。
當一個類實現了一個介面時,只對其例項部分進行型別檢查,程式碼例項如下:
[typescript] 純文字檢視 複製程式碼interface Itest { new (str: string, num: number):void; } class Antzone implements Itest { constructor(strh: string, num: number) { } }
介面規定了建構函式的簽名,然而只會檢查類的例項部分,所以類的建構函式不會被檢測到。
報錯截圖如下:
既然無法檢測類的非例項部分,那麼可以變通一下修改類的建構函式:
[typescript] 純文字檢視 複製程式碼interface ClockConstructor { new (hour: number, minute: number): ClockInterface; } interface ClockInterface { tick(); } function createClock(ctor: ClockConstructor, hour: number, minute: number): ClockInterface { return new ctor(hour, minute); } class DigitalClock implements ClockInterface { constructor(h: number, m: number) { } tick() { console.log("beep beep"); } } class AnalogClock implements ClockInterface { constructor(h: number, m: number) { } tick() { console.log("tick tock"); } } let digital = createClock(DigitalClock, 12, 17); let analog = createClock(AnalogClock, 7, 32);
程式碼非常的簡單,不多介紹,如果有任何疑問可以在文章底部留言。
相關文章
- TypeScript 介面繼承類TypeScript繼承
- [譯]Typescript : 類 vs 介面TypeScript
- typescript探索(二)- 介面與類TypeScript
- TypeScript介面與類的使用TypeScript
- delphi 判斷類是否實現介面,獲取類實現的介面
- 聊聊TypeScript中類、介面之間相互繼承與實現的那些事兒TypeScript繼承
- Set介面及其實現類
- TypeScript 泛型介面和泛型類TypeScript泛型
- python 介面實現類的Python
- TypeScript 簡明教程:介面、函式與類TypeScript函式
- 如何實現查詢介面的所有實現類
- TypeScript 介面TypeScript
- List介面及其主要實現類
- java中介面多個實現類,如何指定實現類,根據子類型別選擇實現方法Java型別
- TypeScript--介面TypeScript
- TypeScript(4)介面TypeScript
- Java集合為什麼設計為:實現類繼承了抽象類,同時實現抽象類實現的介面Java繼承抽象
- Andriod 實現一個類微信聊天介面 (二)
- JAVA--set介面及其實現類的使用Java
- 不實現介面的類能用IOC管理嗎?
- TypeScript中的介面TypeScript
- TypeScript 函式介面TypeScript函式
- TypeScript 介面繼承TypeScript繼承
- 介面回撥的原理:介面變數 呼叫 被類實現的介面的方法變數
- JAVA 將介面的引用指向實現類的物件Java物件
- java 一個類實現兩個介面的案例Java
- BlockingQueue介面及其實現類的原始碼分析BloC原始碼
- 介面是否可繼承(extends)介面? 抽象類是否可實現 (implements)介面? 抽象類是否可繼承具體類(concrete class)?繼承抽象
- TypeScript abstract 抽象類TypeScript抽象
- TypeScript class類相容TypeScript
- TypeScript實現所有設計模式TypeScript設計模式
- 第 9 篇:實現分類、標籤、歸檔日期介面
- Mapper 介面並沒有實現類,它是如何工作的?APP
- 為什麼MyBatis的Mpper介面不需要實現類?MyBatis
- TypeScript如何實現DDD的值物件?TypeScript物件
- TypeScript 實現連結串列反轉TypeScript
- 實現TypeScript中的互斥型別TypeScript型別
- TypeScript學習(三)—— 類TypeScript