// 定义不同类型商品的数据结构
interface PhysicalProductData {
type: 'physical';
name: string;
price: number;
weight: number;
}
interface VirtualProductData {
type: 'virtual';
name: string;
price: number;
downloadLink: string;
}
interface ServiceProductData {
type:'service';
name: string;
price: number;
description: string;
}
// 定义统一的展示格式
interface DisplayProduct {
name: string;
price: number;
details: string;
}
// 函数重载声明
function transformProductData(data: PhysicalProductData): DisplayProduct;
function transformProductData(data: VirtualProductData): DisplayProduct;
function transformProductData(data: ServiceProductData): DisplayProduct;
// 函数实现
function transformProductData(data: PhysicalProductData | VirtualProductData | ServiceProductData): DisplayProduct {
if (data.type === 'physical') {
return {
name: data.name,
price: data.price,
details: `Weight: ${data.weight}kg`
};
} else if (data.type === 'virtual') {
return {
name: data.name,
price: data.price,
details: `Download Link: ${data.downloadLink}`
};
} else {
return {
name: data.name,
price: data.price,
details: data.description
};
}
}