ts中的type 和 interface 區別

小白张先生發表於2024-05-15
  1. type 可以用來給一個型別起個新名字,當命名基本型別或聯合型別等非物件型別時非常有用, 而介面不行
    type MyNumber = number;
    type StringOrNumber = string | number;
    type Text = string | string[];

2 型別別名透過 &(交叉運算子)來擴充套件,而介面透過 extends 的方式來擴充套件。都可以進行擴充套件
a 型別別名
type Animal = {
name: string
}

type Bear = Animal & {
honey: boolean
}

b 介面擴充套件

interface Animal {
name: string
}

interface Bear extends Animal {
honey: boolean
}

3 同名介面會自動合併,而型別別名不會
a 同名介面

interface User {
name: string;
}

interface User {
id: number;
}

let user: User = { id: 666, name: "阿寶哥" };

b 型別別名
type User = {
name: string;
};

// 識別符號“User”重複。ts(2300)
type User = { //Error
id: number;
};

參考文獻: https://blog.csdn.net/Jadon_z/article/details/134282333

相關文章