解析type和interface

typeinterface均可定义类型,但核心区别在于类型扩展能力、声明合并、灵活性及适用场景interface更适合面向对象编程,支持继承和声明合并;type更灵活,支持联合类型、元组等复杂类型,但不能重复声明。二者在多数场景可互换,但需根据具体需求选择。


一、核心差异对比表

特性 interface type
声明合并 ✅ 支持(同名接口自动合并) ❌ 不允许重复声明
扩展方式 extends继承 &交叉类型扩展
类型范围 仅能定义对象、函数、类结构 可定义任意类型(基本类型、联合类型等)
实现(implements) 类可通过implements实现接口 类不能直接implements type定义的类型
性能(大型项目) 声明合并可能增加类型系统复杂度 无合并问题,类型推导更稳定

二、核心差异详述

1. 声明合并(Declaration Merging)

  • interface:允许同名接口自动合并,常用于扩展第三方库类型。

    interface User {
          name: string; }
    interface User {
          age: number; }
    // 合并为 { name: string; age: number; }
    
  • type:禁止重复声明,同名type会报错。

    type User = {
          name: string; };
    type User = {
          age: number; }; // ❌ Error: Duplicate identifier 'User'
    

2. 扩展与继承方式

  • interface:通过extends实现继承,更符合面向对象思维。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值