欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Typescript 中的 interface 和 type 到底有什么區(qū)別詳解

 更新時間:2019年06月18日 10:14:51   作者:七月流螢  
這篇文章主要介紹了Typescript 中的 interface 和 type 到底有什么區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

interface VS type

大家使用 typescript 總會使用到 interface 和 type,官方規(guī)范 稍微說了下兩者的區(qū)別

  • An interface can be named in an extends or implements clause, but a type alias for an object type literal cannot.
  • An interface can have multiple merged declarations, but a type alias for an object type literal cannot.

但是沒有太具體的例子。

明人不說暗話,直接上區(qū)別。

相同點

都可以描述一個對象或者函數(shù)

interface

interface User {
 name: string
 age: number
}

interface SetUser {
 (name: string, age: number): void;
}

type

type User = {
 name: string
 age: number
};

type SetUser = (name: string, age: number): void;

都允許拓展(extends)

interface 和 type 都可以拓展,并且兩者并不是相互獨立的,也就是說 interface 可以 extends type, type 也可以 extends interface 。 雖然效果差不多,但是兩者語法不同。

interface extends interface

interface Name { 
 name: string; 
}
interface User extends Name { 
 age: number; 
}

type extends type

type Name = { 
 name: string; 
}
type User = Name & { age: number };

interface extends type

type Name = { 
 name: string; 
}
interface User extends Name { 
 age: number; 
}

type extends interface

interface Name { 
 name: string; 
}
type User = Name & { 
 age: number; 
}

不同點

type 可以而 interface 不行

type 可以聲明基本類型別名,聯(lián)合類型,元組等類型

// 基本類型別名
type Name = string

// 聯(lián)合類型
interface Dog {
 wong();
}
interface Cat {
 miao();
}

type Pet = Dog | Cat

// 具體定義數(shù)組每個位置的類型
type PetList = [Dog, Pet]

type 語句中還可以使用 typeof 獲取實例的 類型進行賦值

// 當你想獲取一個變量的類型時,使用 typeof
let div = document.createElement('div');
type B = typeof div

其他騷操作

type StringOrNumber = string | number; 
type Text = string | { text: string }; 
type NameLookup = Dictionary<string, Person>; 
type Callback<T> = (data: T) => void; 
type Pair<T> = [T, T]; 
type Coordinates = Pair<number>; 
type Tree<T> = T | { left: Tree<T>, right: Tree<T> };

interface 可以而 type 不行

interface 能夠聲明合并

interface User {
 name: string
 age: number
}

interface User {
 sex: string
}

/*
User 接口為 {
 name: string
 age: number
 sex: string 
}
*/

總結(jié)

一般來說,如果不清楚什么時候用interface/type,能用 interface 實現(xiàn),就用 interface , 如果不能就用 type 。其他更多詳情參看 官方規(guī)范文檔

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JScript中的undefined和"undefined"的區(qū)別

    JScript中的undefined和"undefined"的區(qū)別

    JScript中的undefined和"undefined"的區(qū)別...
    2007-03-03
  • 用javascript作一個通用向?qū)дf明

    用javascript作一個通用向?qū)дf明

    向?qū)Э梢宰屇愕木W(wǎng)站用戶快速上手使用你的web應(yīng)用,提高網(wǎng)站的吸引力。向?qū)б话惴譃楹脦讉€步驟,每個步驟收集一些數(shù)據(jù),并且支持退回功能,所有步驟完成后可以得到每一步的收集結(jié)果。這里給大家展示一種比較通用,靈活且簡單的向?qū)Э蚣堋?/div> 2011-08-08
  • JS實現(xiàn)滾動條觸底加載更多

    JS實現(xiàn)滾動條觸底加載更多

    這篇文章主要介紹了JS滾動條觸底加載更多,需要的朋友可以參考下
    2019-09-09
  • js輪播圖的插件化封裝詳解

    js輪播圖的插件化封裝詳解

    這篇文章主要為大家詳細介紹了js輪播圖的插件化封裝,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Javascript String 字符串操作包

    Javascript String 字符串操作包

    提供一個 JS String 包,包含了一些常用的對字符串操作的函數(shù),詳細的請看源碼及演示
    2010-10-10
  • Javascript中的常見排序算法

    Javascript中的常見排序算法

    用JavaScript實現(xiàn)的常見排序算法:冒泡排序,選擇排序,插入排序,謝爾排序,快速排序(遞歸),快速排序(堆棧),歸并排序,堆排序。
    2007-03-03
  • JavaScript使用DeviceOne開發(fā)實戰(zhàn)(二) 生成調(diào)試安裝包

    JavaScript使用DeviceOne開發(fā)實戰(zhàn)(二) 生成調(diào)試安裝包

    這篇文章主要介紹了JavaScript使用DeviceOne開發(fā)實戰(zhàn)(二) 生成調(diào)試安裝包的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • 使用JavaScript實現(xiàn)頁面局部更新的方法總結(jié)

    使用JavaScript實現(xiàn)頁面局部更新的方法總結(jié)

    在JavaScript中,Ajax(Asynchronous JavaScript and XML)是一種用于在后臺與服務(wù)器進行異步通信的技術(shù),本文給大家介紹了使用JavaScript實現(xiàn)頁面局部更新的三種方法,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • Flexible.js可伸縮布局實現(xiàn)方法詳解

    Flexible.js可伸縮布局實現(xiàn)方法詳解

    這篇文章主要介紹了Flexible.js可伸縮布局實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • 通過繼承IHttpHandle實現(xiàn)JS插件的組織與管理

    通過繼承IHttpHandle實現(xiàn)JS插件的組織與管理

    最近,項目中的用到的Js插件越來越多,有的是用原生javascript寫的,有的是調(diào)用的jquery插件,頁面上Js和Css文件的引用也越來越混亂,而且Js文件之間還有引用先后的依賴關(guān)系
    2010-07-07

最新評論