ts adapter 快速入门
以下是 TypeScript 中 Adapter 模式的快速入门指南(以 HTTP 请求库为例):
1. Adapter 是什么?
Adapter(适配器)是一种设计模式,用于连接两个不兼容的接口。在 TS 中常用于:
- 封装第三方库(如 Axios → 统一 HTTP 请求接口)
- 转换数据格式(如 API 响应 → 前端模型)
- 统一不同类的行为
2. 快速实现示例:HTTP 请求适配器
假设需要统一封装 Axios:
步骤 1:安装依赖
npm install axios
步骤 2:定义适配器接口
// HttpAdapter.ts
export interface HttpAdapter {
get<T>(url: string): Promise<T>;
post<T>(url: string, data: any): Promise<T>;
}
步骤 3:实现 Axios 适配器
import axios, { AxiosResponse } from "axios";
import { HttpAdapter } from "./HttpAdapter";
export class AxiosAdapter implements HttpAdapter {
async get<T>(url: string): Promise<T> {
const response: AxiosResponse<T> = await axios.get(url);
return response.data;
}
async post<T>(url: string, data: any): Promise<T> {
const response: AxiosResponse<T> = await axios.post(url, data);
return response.data;
}
}
步骤 4:在应用中使用适配器
// app.ts
import { HttpAdapter } from "./HttpAdapter";
import { AxiosAdapter } from "./AxiosAdapter";
const http: HttpAdapter = new AxiosAdapter();
// 示例:获取用户数据
interface User {
id: number;
name: string;
}
async function fetchUser() {
const user = await http.get<User>("/api/user/1");
console.log(user.name); // 类型安全!
}
// 示例:提交数据
await http.post("/api/submit", { key: "value" });
3. 适配器模式的核心优势
- 解耦:业务代码不直接依赖 Axios,更换库只需改适配器(如换成 Fetch API)。
- 统一接口:所有 HTTP 调用通过
HttpAdapter接口访问。 - 类型安全:利用 TS 泛型确保输入/输出类型正确。
4. 进阶:替换底层实现(如改用 Fetch API)
export class FetchAdapter implements HttpAdapter {
async get<T>(url: string): Promise<T> {
const response = await fetch(url);
return response.json() as Promise<T>;
}
async post<T>(url: string, data: any): Promise<T> {
const response = await fetch(url, {
method: "POST",
body: JSON.stringify(data),
headers: { "Content-Type": "application/json" },
});
return response.json() as Promise<T>;
}
}
切换适配器只需一行:
// 只需修改此处即可切换 HTTP 库
const http: HttpAdapter = new FetchAdapter(); // 替代 AxiosAdapter
5. 使用场景扩展
- API 响应适配:转换后端数据格式为前端模型
// 适配器内部转换示例 get<T>(url: string): Promise<T> { return axios.get(url).then(res => transformData(res.data)); // 数据转换 } - 兼容不同 SDK:统一不同支付接口(PayPal / Stripe)
总结
- 定义统一接口(如
HttpAdapter) - 实现具体适配器(如
AxiosAdapter/FetchAdapter) - 在业务代码中通过接口调用
- 灵活切换底层实现,不污染业务逻辑
关键原则:业务代码只依赖抽象(接口),不依赖具体实现。
通过 Adapter 模式,你可以轻松管理第三方库的依赖,提升代码的可维护性和可测试性。
不能同时使用lpuart_adapter和uart_adapter吗?
与 RS485 收发器一起使用。 过去,我已经编写了一个简单的代码来使用 uart_adapter 通过带有缓冲区机制的 UART 发送和获取字节。然后在 MCUExpresso 上,在 SDK 组件上,我添加
OpenHarmony 应用开发快速入门
Ability与Page的关系如下图所示: 快速入门提供了一个含有两个页面的Page Ability实例。更多Ability的开发内容及指导,请参见Ability开发。 工具准备 安装最新版DevEco
IAR EWARM快速入门的学习教程免费下载
IAR EWARM快速入门的学习教程免费下载包括了:第一章 EWARM集成开发环境及配套仿真器,第二章在 EWARM中生成一个新项目,第三章编译和连接应用程序,第四章用cSPY调试应用程序,第五章 EWARM Fla
资料下载
佚名
2021-03-25 10:24:19
HarmonyOS快速入门资料分享
HarmonyOS智能设备开发极速入门手册 本文主要详细讲HarmonyOS智能设备开发极速入门,主要从基础流程工作记录IDE安装流程这两个部分来介绍。HarmonyOS ArkUI
adapter模式是如何去定义的
adapter模式定义adapter 将一个类的接口转换成客户希望的另外一个接口。使用场景,两个类所做的事情相同或者相似,但是具有不同的接口时要使用它。target这是客户所期望的接口,目标可以
【易迪赛TS80P智能烙铁免费试用】【易迪赛TS80P智能烙铁免费试用】在手机维修中的实际应用
文档,对TS80P快速入门②通过学习TS80P的软件和配置方法,了解设备
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机