MST
星途 面试题库

面试题:TypeScript函数重载处理复杂业务流程中的数据转换

在一个电商系统中,有不同类型的商品,如实物商品、虚拟商品、服务商品等。对于不同类型的商品,从数据库获取的数据格式不同,但是最终要转换为统一的展示格式。请使用TypeScript函数重载实现一个数据转换函数,能够处理不同类型商品的数据转换逻辑。
19.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 定义不同类型商品的数据结构
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
        };
    }
}