您現在的位置是:電腦技術吧?>? 組裝維修 ??>??lvds接口詳解,eDP接口??>??正文詳情

lvds接口詳解,eDP接口

全宏義2019-12-05 15:51:56 人圍觀
簡介lvds接口圖解類型檢查是typescript的核心設計原則之一。通過使用接口,可以進行類型檢查,滿足傳統的面向對象思想,有利于有效開發,有效避免類型轉換問題。在typescr主板接口詳細圖

TypeScript核心設計原則之一就是類型檢查,通過使用接口(Interfaces)可以進行類型檢查,滿足傳統面向對象思想,利于有效開發,有效避免類型轉換問題。

  在 TypeScript 中,接口是用作約束作用的,在編譯成 JavaScript 的時候,所有的接口都會被擦除掉,因為 JavaScript 中并沒有接口這一概念。

  先看看一個簡單的例子:  ? 1 2 3 4 5 6 function printLabel(labelledObj: { label: string }) { console.log(labelledObj.label); } var myObj = { size: 10, label: Size 10 Object }; printLabel(myObj);   那么在該方法中,labelledObj 的類型就是 {label: string},看上去可能有點復雜,但我們看見看看下面 myObj 的聲明就知道,這是聲明了一個擁有 size 屬性(值為 10)和 label 屬性(值為 Size 10 Object)的對象。

所以方法參數 labelledObj 的類型是 {label: string} 即表明參數擁有一個 string 類型的 label 屬性。

  但是,這么寫的話,這個方法看上去還是有點讓人糊涂。

那么就可以用接口(interface)來定義這個方法的參數類型。

  ? 1 2 3 4 5 6 7 8 9 10 interface LabelledValue { label: string; } function printLabel(labelledObj: LabelledValue) { console.log(labelledObj.label); } var myObj = { size: 10, label: Size 10 Object }; printLabel(myObj);   可選屬性  有些時候,我們并不需要屬性一定存在,就可以使用可選屬性這一特性來定義。

  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 interface SquareConfig { color?: string; width?: number; } function createSquare(config: SquareConfig): { color: string; area: number } { var newSquare = { color: white, area: 100 }; if (config.color) { newSquare.color = config.color; } if (config.width) { newSquare.area = config.width * config.width; } return newSquare; } var mySquare = createSquare({ color: black });   那么我們就傳入了實現一個 SquareConfig 接口的對象入 createSquare 方法。

  既然完全是可有可無的,那么為什么還要定義呢?對比起完全不定義,定義可選屬性有兩個優點。

1、如果存在屬性,能約束類型,這是十分關鍵的;2、能得到語法智能提示,假如誤將方法體中 color 寫成 collor,那么編譯是不通過的。

  方法類型  在 JavaScript 中,方法 function 是一種基本類型。

在面向對象思想中,接口的實現是靠類來完成的,而 function 作為一種類型,是不是能夠實現接口呢?答案是肯定的。

  在 TypeScript 中,我們可以使用接口來約束方法的簽名。

  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 interface SearchFunc { (source: string, subString: string): boolean; } var mySearch: SearchFunc; mySearch = function(source: string, subString: string) { var result = source.search(subString); if (result == -1) { return false; } else { return true; } }   上面代碼中,我們定義了一個接口,接口內約束了一個方法的簽名,這個方法有兩個字符串參數,返回布爾值。

在第二段代碼中我們聲明了這個接口的實現。

  需要注意的是,編譯器僅僅檢查類型是否正確(參數類型、返回值類型),因此參數的名字我們可以換成別的。

  ? 1 2 3 4 5 6 7 8 9 10 var mySearch: SearchFunc; mySearch = function(src: string, sub: string) { var result = src.search(sub); if (result == -1) { return false; } else { return true; } }   這樣也是能夠編譯通過的。

  數組類型  在上面我們在接口中定義了方法類型,那么,數組類型又應該如何定義呢?很簡單。

  ? 1 2 3 4 5 6 interface StringArray { [index: number]: string; } var myArray: StringArray; myArray = [Bob, Fred];   那么 myArray 就是一個數組,并且索引器是 number 類型,元素是 string。

  在接口的定義里面,索引器的名字一般為 index(當然也可以改成別的,但一般情況下都是保持名字為 index)。

所以改成  ? 1 2 3 4 5 6 interface StringArray { [myIndex: number]: string; } var myArray: StringArray; myArray = [Bob, Fred];   也是 ok 的。

  需要注意的是,索引器的類型只能為 number 或者 string。

  ? 1 2 3 4 5 6 7 interface Array{ [index: number]: any; } interface Dictionary{ [index: string]: any; }   上面兩段都是可以編譯通過的。

  最后還有一點要注意的是,如果接口已經是數組類型的話,接口中定義的其它屬性的類型都必須是該數組的元素類型。

例如:  ? 1 2 3 4 interface Dictionary { [index: string]: string; length: number; // error, the type of 'length' is not a subtype of the indexer }   那么將無法編譯通過,需要將 length 改成 string 類型才可以。

  使用類實現接口  一般情況下,我們還是習慣使用一個類,實現需要的接口,而不是像上面直接用接口。

  ? 1 2 3 4 5 6 7 8 interface ClockInterface { currentTime: Date; } class Clock implements ClockInterface { currentTime: Date; constructor(h: number, m: number) { } }   在 TypeScript 中,使用 class 關鍵字來聲明了,這跟 EcmaScript 6 是一樣的。

  另外,我們可以使用接口來約束類中定義的方法。

  ? 1 2 3 4 5 6 7 8 9 10 11 12 interface ClockInterface { currentTime: Date; setTime(d: Date); } class Clock implements ClockInterface { currentTime: Date; setTime(d: Date) { this.currentTime = d; } constructor(h: number, m: number) { } }   在 TypeScript 中,我們可以為接口定義構造函數。

  ? 1 2 3 interface ClockInterface { new (hour: number, minute: number); }   接下來天真的我們可能會接著這么寫:  ? 1 2 3 4 5 6 7 8 interface ClockInterface { new (hour: number, minute: number); } class Clock implements ClockInterface { currentTime: Date; constructor(h: number, m: number) { } }   這是不行的!!!因為構造函數是 static(靜態)的,而類僅能夠實現接口中的 instance(實例)部分。

  那么這個接口中定義的構造函數豈不是沒作用?既然 TypeScript 提供了這項功能,那么肯定不會是沒作用的。

聲明的方法比較特殊:  ? 1 2 3 4 5 6 7 8 9 10 11 interface ClockStatic { new (hour: number, minute: number); } class Clock { currentTime: Date; constructor(h: number, m: number) { } } var cs: ClockStatic = Clock; var newClock = new cs(7, 30);   正常情況下我們是寫 new Clock 的,這里就將 Clock 類指向了 ClockStatic 接口。

需要注意的是,newClock 變量的類型是 any。

  繼承接口  像類一樣,接口也能實現繼承,使用的是 extends 關鍵字。

  ? 1 2 3 4 5 6 7 8 9 10 11 interface Shape { color: string; } interface Square extends Shape { sideLength: number; } var square = Square{}; square.color = blue; square.sideLength = 10;   當然也能繼承多個接口。

  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 interface Shape { color: string; } interface PenStroke { penWidth: number; } interface Square extends Shape, PenStroke { sideLength: number; } var square = Square{}; square.color = blue; square.sideLength = 10; square.penWidth = 5.0;   需要注意的是,盡管支持繼承多個接口,但是如果繼承的接口中,定義的同名屬性的類型不同的話,是不能編譯通過的。

  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 interface Shape { color: string; test: number; } interface PenStroke { penWidth: number; test: string; } interface Square extends Shape, PenStroke { sideLength: number; }   那么這段代碼就無法編譯通過了,因為 test 屬性的類型無法確定。

  同時使用上面所述的類型  如果僅能單一使用某種類型,那么這接口也未免太弱了。

但幸運的是,我們的接口很強大。

  ? 1 2 3 4 5 6 7 8 9 10 interface Counter { (start: number): string; interval: number; reset(): void; } var c: Counter; c(10); c.reset(); c.interval = 5.0;   這樣就使用到三種類型了,分別是方法(接口自己是個方法)、屬性、方法(定義了方法成員)。

  以上所述就是本文的全部內容了,希望大家能夠喜歡。

版權聲明:本文由 全宏義 整理編輯。

原標題:接口,解析接口

轉載注明出處:http://www.dn9ww09s.icu/assemble/15180.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • jquery ready,js ready

    jquery ready,js ready 相關圖片jquery toggle本文主要介紹jQuery中ready()函數的執行時間以及窗口加載事件比較的相關資料。對于您的朋友,可以參考jQuery中ready()的實現是domcontejquery callback...

  • sqlserver數據庫連接配置,連接sqlserver數據庫方法

    sqlserver數據庫連接配置,連接sqlserver數據庫方法 相關圖片sql2000數據庫導入聯系Java或JSP,必然會使用數據庫SQL Server 2000/2005(我使用的是2005標準版[9.0.3054]測試),經過自己的搜索和研究,使用Jsql server連接服務器...

  • 什么是增量備份,增量備份和完全備份

    什么是增量備份,增量備份和完全備份 相關圖片增量和差異備份RMAN中有兩種增量備份:差異模式和累積模式。備份級別分為五個級別:0、1、2、3和4,其中級別0最高。差異備份(同意上級備份甚至對等備份):分析:上周日增量備份...

  • jquery toggle,jquery

    jquery toggle,jquery 相關圖片jquery listJQuery的toggle()函數使用show()或hide()函數來切換HTML元素的可見狀態。今天,我們將討論在jQuery中使用toggle函數的替代方法jquery文檔...

  • jquerygrid,jquerygrid拖拽

    jquerygrid,jquerygrid拖拽 相關圖片js表格grid控件本教程將教您制作一個jQuery響應圖像以顯示庫效果。所有的圖像都以網格的形式排列,然后隨機翻轉一些網格來切換圖片。這個效果可以作為我們網站的背景或裝飾。grij...

  • sqlserver死鎖,sqlserver死鎖解決

    sqlserver死鎖,sqlserver死鎖解決 相關圖片sql 死鎖一。死鎖1的四個必要條件。互斥:資源不能共享,只能由一個進程使用。2。等待:已獲取資源的進程可以再次申請新資源。三。沒有pre-sqlserver日志查看死鎖...

  • 12560 協議適配器錯誤,協議適配器錯誤12560怎么處理

    12560 協議適配器錯誤,協議適配器錯誤12560怎么處理 相關圖片數據庫協議適配器錯誤解決方案:首先,確保創建了多個本地數據庫實例。如果尚未創建新實例,則默認實例為:orcl;如果已創建新實例,則輸入自己新創建的實例名稱。此時,只需在...

  • cmd打開sqlserver,cmd登錄sqlserver

    cmd打開sqlserver,cmd登錄sqlserver 相關圖片cmd窗口sql如果您的遠程桌面無法遠程,系統將提示您用戶數超過。您可以嘗試使用SQL server。您還可以通過在SQL server中執行CMD命令來注銷登錄用戶。連接到Mcmd登錄sql...

  • 準則,兩個準則

    準則,兩個準則 相關圖片兩條例一準則本文主要介紹JavaScript API設計的一些建議和指導原則。它列出了許多著名的JSAPI輔助解釋,并強烈推薦!你可以把設計作為一個非常普遍的概念,它可以理兩準則四條例...

  • 驗證表單,javascript表單驗證

    驗證表單,javascript表單驗證 相關圖片html怎么驗證表單本文主要介紹angularjs中表單驗證編程的詳細說明。Angularjs是一個非常流行的JavaScript庫。您可以為您的朋友參考以下要求:名稱是必需的,用html表單驗證...

熱評文章

  • decode函數的用法,decode函數實例

    decode函數的用法,decode函數實例 相關圖片oracle decode 用模糊decode函數相當于條件語句(if)。它將輸入值與函數中的參數列表進行比較,并根據輸入值返回相應的值。函數的參數列表由多個值及其相應的結果值組成。當然,如果...

  • 控制文件損壞,oracle控制文件

    控制文件損壞,oracle控制文件 相關圖片增加控制文件出現的現象是系統無法登錄,沒有用戶可以,懷疑數據庫有問題,輸入服務器,運行sqlplususername/password,無法輸入數據庫,提示輸入用戶名。重新重建控制文件...

  • gaming mouse鼠標宏,scream鼠標

    gaming mouse鼠標宏,scream鼠標 相關圖片mouse0是哪個鍵本文主要介紹了JavaScript和jQuery的鼠標-鼠標事件冒泡處理,總結了鼠標事件的一些結論,并分別給出了JavaScript和jQuery的測試代碼。您mouse3是哪個鍵...

  • 實例卡,實例

    實例卡,實例 相關圖片實例文本Example off: V $diag_infosphere name = sqltname.sqlselect value in 'default trac什么是示例圖...

  • 什么是位圖索引,創建位圖索引

    什么是位圖索引,創建位圖索引 相關圖片位圖索引的主要優缺點什么是位圖索引位圖索引的一些特性?位圖索引的優缺點?讓我們看看低比特圖像掃描的例子。查詢計劃----------------------------------索引...

  • sysdba,expdp sysdba

    sysdba,expdp sysdba 相關圖片dba和sysdba一。Oracle可以通過兩種方式對SYSDBA/sysoper用戶進行身份驗證:1)操作系統級身份驗證:登錄Oracle數據庫主機,使用以下用戶登錄,然后直接使oracle賦予sysdba權限...

  • ajax,ajax如何處理跨域問題

    ajax,ajax如何處理跨域問題 相關圖片java處理ajax請求本文主要介紹jQuery中模擬圖像的ajaxprefilter和ajaxtransport處理。本文直接給出了仿真實現代碼,其中包含了詳細的注釋。朋友請參考“1ajax json...

  • 鎖和事務,事務一定鎖表嗎

    鎖和事務,事務一定鎖表嗎 相關圖片事務和數據庫鎖的聯系SQL server中的事務和鎖事務都是關于原子性的。原子性的概念意味著某物可以被視為一個單元。從數據庫的角度來看,它是指一個或多個應該執行或不執行的語句的...

  • iptables 端口轉發,iptables本地端口轉發

    iptables 端口轉發,iptables本地端口轉發 相關圖片centos6端口轉發本地接口IP 61.144.14.72的轉發端口3389到116.6.73.229的端口3389(主要是61.144.14.72的接入端口3389,跳到116.iptables端口轉發不起作用...

  • 數據結構 鏈表,單鏈表數據結構

    數據結構 鏈表,單鏈表數據結構 相關圖片鏈表本文主要介紹JavaScript中的數據結構和算法(3):鏈表。本文分別介紹了單鏈表和雙鏈表的代碼示例,以及添加節和刪除節的代碼示例。我們可以看到JavaScr什么是鏈表...

關注微信

变脸官网查询