TypeScript中interface和type的区别
   笔记    1 comment
TypeScript中interface和type的区别
   笔记    1 comment

概念

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”重复。
Responses
  1. nvyepu59863LI-娱乐娱乐http://jyingjinsheng.cn//

    Reply