TS中被问interface与type的区别怎么回答?

131 阅读2分钟

interface的特点

  1. 接口定义了一个新的命名类型,用于描述一组属性和方法的集合,不占用实际的值。
  2. 接口中可以定义属性、方法和索引签名等成员,也可以继承其他接口。
  3. 接口不能直接定义具体的实现,只能约束其他对象的形状。 总结:用于描述约束对象的形状,不占用实际的值,不能具体的实现
    interface Person { 
        name: string; 
        age: number; 
        gender: 'male' | 'female'; 
        sayHi: () => void; 
       }
       
     const john: Person = { 
         name: "John", 
         age: 30, 
         gender: "male", 
         sayHi() { 
             console.log(`Hi, my name is ${this.name}.`); 
           },
          };

上面代码就是定义了接口去约束了一个对象的类型,但是没有去实现。

type 的特点

  1. 类型别名用来给一个类型起一个新的名字,不会创建新的类型。
  2. 类型别名可以定义任何类型,包括基本类型、对象类型、联合类型、交叉类型等。
  3. 类型别名可以使用泛型进行定义,以便适用于不同的类型。
    type Employee = string | number; 
    let empId: Employee = 123; 
    let empName: Employee = "John";

在上面的代码中,我们使用 type 关键字定义了一个新的类型别名 Employee,将联合类型 (string | number) 定义为一个新的类型。然后我们使用这个新的类型别名来定义 empIdempName 两个变量,它们都可以是 stringnumber 类型的值。

重点总结 1.定义类型,interface可以描述一个对象的形状,而type可以定义任何类型,包括基本数据,对象类型,联合类型等, 2.继承的区别,interface可以通过extends关键字继续其他的接口,而type可以使用&运算符进行合并,交叉合并,或者联合合并。 3.实现, interface不能直接定义具体的实现,只能通过约束对象的形状,而type可以定义具体的类型与实现