日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

TypeScript接口和類型的區(qū)別小結(jié)

瀏覽:19日期:2022-06-09 13:51:18
目錄
  • 接口(interface)
  • 類型(type)
  • interface vs type
  • 結(jié)論

TypeScript 是由 Microsoft 開(kāi)發(fā)的一種開(kāi)源的編程語(yǔ)言。它是 JavaScript 的超集,添加了靜態(tài)類型和其他功能,使代碼更為健壯且易于維護(hù)。在 TypeScript 中,有兩種主要的定義自定義類型的方式:接口和類型。盡管它們?cè)谕庥^上可能相似,但它們之間有一些關(guān)鍵的區(qū)別。在本文中,我們將討論 TypeScript 中接口和類型之間的區(qū)別并給出具體代碼示例。

接口(interface)

interface 是一種定義復(fù)雜類型的方式,它可以用來(lái)描述對(duì)象類型、函數(shù)類型、類類型、數(shù)組類型、字面量類型等。interface 通常用來(lái)描述一個(gè)對(duì)象的外部形狀(Shape),即這個(gè)對(duì)象有哪些屬性、屬性的類型是什么、方法的簽名是什么等。例如:

interface Person {
? name: string;
? age: number;
? sayHello(): void;
}
class Student implements Person {
? name: string;
? age: number;
? constructor(name: string, age: number) {
? ? this.name = name;
? ? this.age = age;
? }
? sayHello() {
? ? console.log(`Hi, my name is ${this.name}, and I"m ${this.age} years old.`);
? }
}
const student = new Student("Tom", 20);
student.sayHello(); // Hi, my name is Tom, and I"m 20 years old.

上面的代碼中,我們定義了一個(gè) Person 接口,它包含 name 和 age 屬性以及 sayHello 方法。然后我們定義了一個(gè) Student 類,它實(shí)現(xiàn)了 Person 接口,因此必須實(shí)現(xiàn) name、age 和 sayHello。在 sayHello 方法中,我們使用模板字符串輸出學(xué)生的姓名和年齡。

類型(type)

type 是一種定義簡(jiǎn)單類型的方式,它可以用來(lái)定義基本類型、聯(lián)合類型、交叉類型、字面量類型等。type 可以給一個(gè)類型起一個(gè)別名,以便重復(fù)使用。例如:

type Status = "active" | "inactive";
type Person = {
? name: string;
? age: number;
? status: Status;
};

上面的代碼定義了一個(gè) Status 類型和一個(gè) Person 類型。Status 類型是一個(gè)字符串字面量類型,它只能是 'active' 或 'inactive' 中的一個(gè)。Person 類型描述了一個(gè)人對(duì)象的形狀,包括 name 屬性、age 屬性和 status 屬性,其中 status 屬性的類型是 Status。

雖然 interface 和 type 在定義類型時(shí)有些不同,但在使用時(shí)它們是具有一定通用性的。例如,我們可以使用 interface 定義函數(shù)的參數(shù)類型和返回值類型,也可以使用 type 定義同樣的類型,例如:

interface Sum {
? (a: number, b: number): number;
}
type Multiply = (a: number, b: number) => number;

上面的代碼分別使用 interface 和 type 定義了一個(gè)加法函數(shù)類型 Sum 和一個(gè)乘法函數(shù)類型 Multiply,它們都接受兩個(gè)參數(shù)并返回它們的運(yùn)算結(jié)果。

interface vs type

接口可以被繼承,而類型不能。

接口可以通過(guò) extends 關(guān)鍵字來(lái)擴(kuò)展基礎(chǔ)接口,例如:

interface Person {
? name: string;
? age: number;
}
interface Employee extends Person {
? company: string;
}
const employee: Employee = { name: "John", age: 30, company: "Acme Inc." };

類型不能被繼承。

類型只能定義一次,而接口可以定義多次并且會(huì)自動(dòng)合并。

類型可以定義一次,例如:

type Status = "active" | "inactive";
const status: Status = "active";

如果試圖再次定義同名類型,則會(huì)報(bào)錯(cuò)。
接口可以定義多次,并且會(huì)自動(dòng)合并同名屬性,例如:

interface Person {
? name: string;
}
interface Person {
? age: number;
}
const person: Person = { name: "John", age: 30 };

接口可以定義可選屬性和只讀屬性,而類型不能。

接口可以定義可選屬性和只讀屬性,例如:

interface Person {
? name: string;
? age?: number;
? readonly email: string;
}
const person1: Person = { name: "John", email: "john@example.com" };
const person2: Person = { name: "Jane", age: 25, email: "jane@example.com" };
person1.email = "jane@example.com"; // Error: Cannot assign to "email" because it is a read-only property.

類型不能定義可選屬性和只讀屬性。

類型可以定義聯(lián)合類型和交叉類型,而接口不能。

類型可以用聯(lián)合類型和交叉類型來(lái)組合多個(gè)類型,例如:

type Person = { name: string } & { age: number };
type Status = "active" | "inactive";
type UserStatus = { status: Status } & Person;
const userStatus: UserStatus = { name: "John", age: 30, status: "active" };

接口可以定義索引簽名,而類型不能。

接口可以定義索引簽名,例如:

interface Dictionary {
? [key: string]: number;
}
const dict: Dictionary = { a: 1, b: 2 };

類型不能定義索引簽名。

結(jié)論

  • 在對(duì)象擴(kuò)展情況下,interface 使用 extends 關(guān)鍵字,而 type 使用交叉類型(&)。
  • 同名的 interface 會(huì)自動(dòng)合并,并且在合并時(shí)會(huì)要求兼容原接口的結(jié)構(gòu)。
  • interface 與 type 都可以描述對(duì)象類型、函數(shù)類型、Class 類型,但 interface 無(wú)法像 type 那樣表達(dá)元組、一組聯(lián)合類型等等。
  • interface 無(wú)法使用映射類型等類型工具,也就意味著在類型編程場(chǎng)景中我們還是應(yīng)該使用 type 。

interface 就是描述對(duì)象對(duì)外暴露的接口,其不應(yīng)該具有過(guò)于復(fù)雜的類型邏輯,最多局限于泛型約束與索引類型這個(gè)層面。而 type alias 就是用于將一組類型的重命名,或是對(duì)類型進(jìn)行復(fù)雜編程。

到此這篇關(guān)于TypeScript接口和類型的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)TypeScript接口和類型區(qū)別內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品视频在线看| 日韩精品免费视频一区二区三区| 欧美xxxx性| 亚洲麻豆一区| 国产免费成人| 一区在线观看| 黑丝一区二区三区| 激情婷婷亚洲| 亚洲午夜黄色| 免费av一区二区三区四区| 日韩精品电影| 久久久精品网| av一区二区高清| 久久电影一区| 日韩av一区二区在线影视| 欧美一区影院| 高清一区二区三区av| 天堂√8在线中文| 久久国产66| 国产精品xxx| 电影天堂国产精品| 亚洲高清久久| 亚洲一区二区毛片| 国产免费播放一区二区| 91欧美国产| 国产精品女主播一区二区三区| 亚洲欧美网站| 欧美日本三区| 91亚洲国产高清| 亚洲国产专区| 视频一区二区三区中文字幕| 国产私拍福利精品视频二区| 国产一区丝袜| 免费久久精品| 日本天堂一区| 欧美日韩国产高清电影| 国产精品7m凸凹视频分类| 免播放器亚洲一区| 久久精品一区二区国产| 在线看片日韩| 老司机免费视频一区二区| 日本午夜大片a在线观看| 免费成人网www| 日韩中文字幕一区二区高清99| 里番精品3d一二三区| 欧美午夜精彩| 国产丝袜一区| 好看不卡的中文字幕| 日韩精品亚洲aⅴ在线影院| 久久精品国产福利| 国产三级一区| 精品国产精品久久一区免费式| 久久三级视频| 青草综合视频| 中文一区一区三区高中清不卡免费| 久久精品一区二区不卡| 欧美日韩va| 日韩国产一区| 国产欧美另类| 亚洲经典在线| 日韩国产一区二区| 蜜桃视频一区二区三区| 日韩av自拍| 国产欧美日韩一区二区三区四区| 久久精品免费一区二区三区| 日韩成人精品一区二区三区| 粉嫩av一区二区三区四区五区| 一本色道久久精品| 久久婷婷亚洲| 成人在线超碰| 在线精品小视频| 国产成人久久| 国产精品亚洲产品| 视频一区中文| 国产v日韩v欧美v| 欧美aⅴ一区二区三区视频| 天堂精品久久久久| 亚洲毛片在线| 伊人久久大香伊蕉在人线观看热v| 免费一二一二在线视频| 韩国女主播一区二区三区| 一区二区三区四区日韩| 欧美理论视频| 久久精品青草| 国产精品日本一区二区不卡视频| 日韩av黄色在线| 国产精品观看| 成人精品高清在线视频| 91嫩草亚洲精品| 久久久久久久久久久妇女| 国产精品第十页| 国产成人精选| 久久精品青草| 久久国产精品毛片| 性色一区二区| 日韩精品首页| 特黄特色欧美大片| 欧美va天堂在线| 亚洲精品美女91| 97久久亚洲| 亚洲午夜天堂| 黄色国产精品| 日本aⅴ亚洲精品中文乱码| 免费亚洲婷婷| 激情六月综合| 午夜在线一区| 久久久久黄色| 欧美日韩中文字幕一区二区三区| 在线视频精品| 国产在线一区不卡| 欧美.日韩.国产.一区.二区 | 精品高清久久| av资源中文在线| 亚洲精品国产嫩草在线观看| 91精品综合| 丝袜美腿亚洲一区| 精品久久免费| 国产一区导航| 欧美日韩视频免费观看| 亚洲精品高潮| 久久不见久久见免费视频7| 樱桃视频成人在线观看| 日韩综合一区二区| 在线日韩欧美| 日韩视频二区| 亚洲三级欧美| 久久狠狠久久| 久久久精品久久久久久96 | 高清不卡亚洲| 色8久久久久| 亚洲91精品| 国产亚洲电影| 快播电影网址老女人久久| 久久a爱视频| 亚洲精品国产精品粉嫩| 亚洲精品.com| 国产在视频一区二区三区吞精| 免费高清在线一区| 99在线|亚洲一区二区| 色婷婷综合网| 欧美激情精品| 国产精品2023| 一区二区亚洲视频| 91久久中文| 国产精品13p| 亚洲www啪成人一区二区| 精品视频自拍| 97久久亚洲| 日韩av一区二区在线影视| 中文视频一区| 亚洲3区在线| 亚洲女同一区| 日韩高清不卡在线| 少妇精品久久久一区二区| 人人精品人人爱| 蜜桃视频一区二区三区| 亚洲久久在线| 国产日产高清欧美一区二区三区| 亚洲三区欧美一区国产二区| 亚洲永久av| 国产精品美女久久久| 亚洲女人av| 欧美日韩国产高清| 日韩中文字幕亚洲一区二区va在线| 欧美精品自拍| 在线亚洲国产精品网站| 亚洲毛片网站| 国产一区二区三区黄网站| 欧美日韩尤物久久| 日韩一级不卡| 日韩精品免费一区二区三区| 国产99精品| 首页国产欧美久久| 日韩高清一区在线 | 一区二区精品| 久久不见久久见免费视频7| 中文字幕日韩高清在线 | 亚洲欧美成人综合| 国产精品九九| 欧美视频久久| 亚洲福利精品| 久久激情五月激情| 日韩三区免费| 日韩精品午夜视频| 久久中文字幕av| 性一交一乱一区二区洋洋av| 国产精品密蕾丝视频下载| 亚洲v在线看| 丝袜美腿亚洲一区二区图片| 国产精品久久久久久模特| 在线视频观看日韩| 国产一区二区三区四区五区传媒 | 亚洲成人精选| 亚洲va久久久噜噜噜久久| 国产一区2区| 亚洲美女久久| 亚洲在线成人| 99精品国产一区二区三区| 国产视频网站一区二区三区| 亚洲精华国产欧美|