一個叫接口除盏,一個叫類型別名叉橱。只是有時候兩者都能實現(xiàn)同樣的功能,才會經(jīng)常被混淆者蠕。
interface
interface(接口) 是 TS 設計出來用于定義對象類型的窃祝,可以對對象的形狀進行描述。
interface Person {
uname: string
age: number
}
const person: Person = {
uname: 'lin',
age: 18
}
type
type (類型別名)踱侣,顧名思義锌杀,類型別名只是給類型起一個新名字。它并不是一個類型泻仙,只是一個別名而已
兩者的共同點
都可以定義一個對象或函數(shù)
我們來看一下如何定義函數(shù)糕再。
type addType = (num1:number,num2:number) => number
interface addType {
(num1:number,num2:number):number
}
都可以繼承
interface 繼承 interface
interface Person {
name: string
}
interface Student extends Person {
grade: number
}
復制代碼
const person:Student = {
name: 'lin',
grade: 100
}
復制代碼
type 繼承 type
type Person = {
name: string
}
type Student = Person & { grade: number } 用交叉類型
復制代碼
interface 繼承 type
type Person = {
name: string
}
interface Student extends Person {
grade: number
}
復制代碼
type 繼承 interface
interface Person {
name: string
}
type Student = Person & { grade: number } 用交叉類型
interface 使用 extends 實現(xiàn)繼承, type 使用交叉類型實現(xiàn)繼承
兩者的不同點
聲明類型
type作為類型別名玉转,可以給任何類型起別名
interface基本只用來給對象定義類型接口
重復聲明
interface可以重復聲明突想,會合并接口類型
type會報錯
類
interface可以使用implements關鍵字來約束類