// 定义融合后的类型
interface MergedData extends BaseData, ExtendedData1, ExtendedData2 {}
// 假设这里有一个发起网络请求的函数
function fetchDataById(id: number): Promise<any> {
// 实际实现中这里应该是真实的网络请求逻辑
return Promise.resolve({});
}
async function processData(data: MergedData) {
if (data.status === 'active' && data.tags.includes('important')) {
for (const id of data.relatedIds) {
const result = await fetchDataById(id);
// 这里可以继续处理获取到的详细数据
console.log(`处理id为 ${id} 的详细数据:`, result);
}
}
// 其他复杂业务处理逻辑可以继续在这里添加
}
说明
- 类型定义:通过接口继承和交叉类型,定义了
MergedData
类型,它融合了 BaseData
、ExtendedData1
和 ExtendedData2
的所有属性,保证了类型安全。
- 函数实现:
processData
函数接收 MergedData
类型的数据,并根据题目要求的业务逻辑进行处理。这里假设了一个 fetchDataById
函数来模拟发起网络请求获取详细数据,实际应用中应该替换为真实的网络请求逻辑。函数内部通过条件判断来确定是否发起网络请求,并对获取到的数据进行后续处理。
- 扩展性:这种设计使得在不同业务场景下,很容易在
processData
函数内部添加新的业务逻辑,例如在不同的 status
值或者 tags
内容下执行不同的操作,代码结构清晰,易于维护。