概念
interface接口
描述对象的类型中使用interface代替类型,接口主要用于类型检查,它只是一个结构契约,定义了具有相似的名称和类型的对象结构。除此之外,接口还可以定义方法和事件。
type类型别名
不同于 interface 只能定义对象类型,type 声明还可以定义基础类型、联合类型或交叉类型。
区别
区别1.定义类型的范围不同
interface 只能定义对象类型, 而 type 声明可以声明任何类型,包括基础类型、联合类型或交叉类型
//基本类型
type Person = string
//联合类型
interface Name{
name:string
}
interface Age{
age:number
}
type Person = Name|Age
//元组
interface Name{
name:string
}
interface Age{
age:number
}
type Person = [Name,Age]
区别2.扩展性不同
接口可以 extends、implements,从而扩展多个接口或类。类型没有扩展功能,只能交叉合并。
//interface extends interface
interface Person {
name: string;
}
interface User extends Person {
age: number;
}
//interface extends type
type Person = { name: string };
interface User extends Person {
age: number;
}
//type 使用交叉类型:&,来合并不同成员的类型
//type & type
type Person = { name: string };
type User = Person & { age: number };
//type & interface
interface Person {
name: string;
}
type User = { age: number } & Person;
区别3.多次声明的差异性
interface可以多次声明,结果为多次声明并集
interface myInterface{
name:string;
age:number;
}
//当接口重复定义的时候,接口包含的内容为并集
interface myInterface{
gender:string;
say():void
}
type多次定义会出现异常
type User = {
name: string;
};
type User = {
age: number;
};
// 声明重复报错:标识符“User”重复。
本文由 yuin 创作,
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。
nvyepu59863LI-娱乐娱乐http://jyingjinsheng.cn//