interface &class
2025-6-9
| 2025-6-9
Words 777Read Time 2 min
type
status
date
slug
summary
tags
category
icon
password
😀
这里写文章的前言: 在摸摸鱼定义接口的文件中,我使用了clas定会以来发送消息的类型,使用interface定义了接收到处理的http请求到的json信息(懒得写构造函数,,千问返回的json信息太长了,我还不清楚是否不用写齐全构造信息来处理对我获取content字符段有没有影响,因为目前还未成功)突然想对比一下二者区别
 

📝 主旨内容

核心差异

特性
interface
class
本质
纯定义类型,编译后代码中移除
既定义类型,也是运行实体
实例化
不能直接实例化
可以通过new创建对象实例
方法实现
只能定义方法签名,无具体实现
可以包含属性和方法的具体实现
继承机制
支持多继承(extend多个接口)
单继承类,但可implements多接口
编译后代码处理
类信息被擦除
保留位JavaScript类结构

典型应用场景

1. 使用 interface 的场景
定义数据模型
如 DTO(数据传输对象)、组件 Props:仅需描述数据的结构,无需实现方法
跨组件共享类型
在父子组件间传递复杂参数时,通过接口统一数据类型。
2. 使用 class 的场景
需要实例化对象
如状态管理、组件逻辑封装:
  • 需要继承和方法复用
    • 通过继承实现代码复用,或结合 @Observed 装饰器实现深层次状态管理(参考鸿蒙状态管理机制)。

三、开发建议
  1. 优先使用 interface 的场景
      • 定义纯数据类型(如 API 响应、全局配置)
      • 需要多继承或类型合并时(如扩展第三方库类型)
  1. 优先使用 class 的场景
      • 需要封装业务逻辑(如网络请求、本地存储)
      • 需要依赖注入或实现单例模式
      • 需要配合装饰器(如 @State@Observed)管理状态
       
      四、实际开发对比示例
 
随后我再写了一段代码验证了一下:
notion image
然后我貌似知道我为什么一直获取不到http返回的content那一段字符串了,那是因为代码编译完我刚获取的信息被擦除了。

后续:是由于我的接口不完整,补全了就ok了,也是通过 return receive.choices[0].message.content成功调用出content里面的消息了。

📎 参考文章

  • ai
 
随手记录修改host文件秒进GitHub但进不去gitte有感
Loading...