VVLL.net

Typescript 中 interface 与 Type 有什么区别

日期:2024-08-22 09:58:31

在 TypeScript 中,interfacetype 都可以用来定义对象的形状,但它们有一些关键的区别和各自的适用场景。以下是两者的区别和使用场景:

区别

  1. 声明合并 (Declaration Merging)
    • interface 可以声明多次,并且会自动合并。
    • type 则不支持声明合并。
    interface User {
      name: string;
    }
    
    interface User {
      age: number;
    }
    
    const user: User = {
      name: 'Alice',
      age: 25,
    }; // 合法,User 接口自动合并
    
    type User = {
      name: string;
    };
    
    type User = {
      age: number;
    }; // 错误,类型别名不能重复声明
    
  2. 扩展性
    • interface 支持使用 extends 进行扩展。
    • type 可以使用交叉类型(&)进行组合。