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

Typescript中interface與type的相同點與不同點的詳細說明

 更新時間:2022年11月26日 15:38:30   作者:七月流螢  
這篇文章主要介紹了Typescript中interface與type的相同點與不同點,并配有實例說明,需要的朋友可以參考下

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ī)范文檔

更多關于Typescript中interface與type的相關知識點請查看下面的相關鏈接

相關文章

  • ajax與jsonp的區(qū)別及用法

    ajax與jsonp的區(qū)別及用法

    在本篇文章里我們給大家分享了ajax與jsonp的區(qū)別的相關知識點內(nèi)容,有需要的朋友們可以學習下。
    2018-10-10
  • javascript es6的常用語法你知道嗎

    javascript es6的常用語法你知道嗎

    這篇文章主要為大家介紹了javascriptes6的常用語法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • javascript中clone對象詳解

    javascript中clone對象詳解

    這篇文章主要介紹了javascript中clone對象的方法,需要的朋友可以參考下
    2014-12-12
  • js中的setInterval和setTimeout使用實例

    js中的setInterval和setTimeout使用實例

    這篇文章主要介紹了javascript中的兩個定時執(zhí)行函數(shù)setInterval和setTimeout的用法,需要的朋友可以參考下
    2014-05-05
  • JavaScript高級程序設計(第3版)學習筆記3 js簡單數(shù)據(jù)類型

    JavaScript高級程序設計(第3版)學習筆記3 js簡單數(shù)據(jù)類型

    數(shù)據(jù)類型是編程語言的磚瓦,是所有你能想象到的復雜抽象的基礎,在現(xiàn)代編程語言中,除了語言本身內(nèi)置的一些簡單數(shù)據(jù)類型外,基本上都提供了用于自定義數(shù)據(jù)類型的語言機制(在C中也可以利用結(jié)構(gòu)體來實現(xiàn)),這些機制在一定程度上也決定了該語言的流行度和生命力
    2012-10-10
  • 用js重建星際爭霸

    用js重建星際爭霸

    用js重建星際爭霸...
    2006-12-12
  • javascript中undefined與null的區(qū)別

    javascript中undefined與null的區(qū)別

    這篇文章介紹了javascript中undefined與null的區(qū)別,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Knockout visible綁定使用方法

    Knockout visible綁定使用方法

    本文講解Knockout讓visible綁定到DOM元素上,使得該元素的hidden或visible取決于綁定的值,下面有代碼參考
    2013-11-11
  • JS Attribute屬性操作詳解

    JS Attribute屬性操作詳解

    下面小編就為大家?guī)硪黄狫S Attribute屬性操作詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • JavaScript中的small()方法使用詳解

    JavaScript中的small()方法使用詳解

    這篇文章主要介紹了JavaScript中的small()方法使用詳解,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-06-06

最新評論