TS-类型别名和接口的区别

TypeScript中的类型别名(Type Alias)接口(Interface) 都是用来自定义类型的工具,但他们在语法和使用场景上有一些区别。

  1. 扩展和合并

    • 类型别名:不能直接扩展和合并,但可以通过交叉类型来实现类似的效果。
    type Point3D = Point & {z: number}
    
    • 接口:可以扩展其他接口。
    interface Point3D extends Point {
      z: number;
    }
    interface Point {
      x: number
      y: number
    }
    
  2. 使用场景

    • 类型别名:适用于定义联合类型、交叉类型、元组等复杂类型。
    type StringOrNumber = string | number
    type TupleType = [string, number]
    
    • 接口:适用于定义对象形状,特别是在面向对象编程中定义类和对象的接口。
    interface Person {
    	name: string
    	age: number
    }
    
  3. 实现和继承

    • 类型别名:不能被实现
    • 接口:可以被类实现
    class MyPoint implements Point {
    	x: number
    	y: number
    }
    
  4. 字面量类型

    • 类型别名:可以定义字面量类型
    type Direction = 'N' | 'S' | 'E' | 'W'
    
    • 接口:不能定义字面量类型
  5. 工具类型

    • 类型别名:可以定义工具类型
    type Partial<T> = {
      [P in keyof T]?: T[P];
    };
    
    • 接口:不能定义工具类型

总结

  • 类型别名:适用于定义复杂类型、联合类型、交叉类型、元组等,但不能被类实现。
  • 接口: 适用于定义对象的形状,特别是在面向对象编程中定义类和对象的接口,可以被类实现,可以扩展和合并

相关推荐

  1. TS-类型别名接口区别

    2024-07-11 14:38:04       18 阅读
  2. ts中typeinterface类型声明区别

    2024-07-11 14:38:04       59 阅读
  3. tsjs区别

    2024-07-11 14:38:04       31 阅读
  4. TS设置接收形参类型

    2024-07-11 14:38:04       22 阅读
  5. TS中constreadonly区别

    2024-07-11 14:38:04       31 阅读
  6. go 语言中别名类型

    2024-07-11 14:38:04       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 14:38:04       53 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 14:38:04       56 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 14:38:04       46 阅读
  4. Python语言-面向对象

    2024-07-11 14:38:04       57 阅读

热门阅读

  1. 索引

    2024-07-11 14:38:04       19 阅读
  2. 嵌入式Bootloader面试题面面观(2万字长文)

    2024-07-11 14:38:04       22 阅读
  3. 1.python基础

    2024-07-11 14:38:04       20 阅读
  4. 24/07/11数据结构(6.1215)双链表实现-栈实现

    2024-07-11 14:38:04       21 阅读
  5. Spring框架:核心概念与Spring Boot微服务开发指南

    2024-07-11 14:38:04       17 阅读
  6. 解决Spring Boot中的数据安全与加密

    2024-07-11 14:38:04       21 阅读
  7. Flask和Django两个Web框架的特点和适用场景

    2024-07-11 14:38:04       22 阅读
  8. 直升机停机坪的H代表什么

    2024-07-11 14:38:04       16 阅读
  9. AcWing 187. 导弹防御系统

    2024-07-11 14:38:04       21 阅读