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
装饰器实现深层次状态管理(参考鸿蒙状态管理机制)。三、开发建议
- 优先使用
interface
的场景 - 定义纯数据类型(如 API 响应、全局配置)
- 需要多继承或类型合并时(如扩展第三方库类型)
- 优先使用
class
的场景 - 需要封装业务逻辑(如网络请求、本地存储)
- 需要依赖注入或实现单例模式
- 需要配合装饰器(如
@State
、@Observed
)管理状态
四、实际开发对比示例
随后我再写了一段代码验证了一下:

然后我貌似知道我为什么一直获取不到http返回的content那一段字符串了,那是因为代码编译完我刚获取的信息被擦除了。
后续:是由于我的接口不完整,补全了就ok了,也是通过
return
receive.choices[0].message.content
成功调用出content里面的消息了。📎 参考文章
- ai