MST

星途 面试题库

面试题:TypeScript 利用泛型和条件类型处理复杂对象结构

有一个对象类型 `Data`,它可以是以下两种结构之一:`{ type: 'user'; name: string; age: number; }` 或 `{ type: 'product'; name: string; price: number; }`。请编写一个泛型函数 `processData`,根据对象的 `type` 属性,返回不同的处理结果。如果是 `user` 类型,返回 `name + ' is ' + age + ' years old'`;如果是 `product` 类型,返回 `name + ' costs ' + price`。要求利用泛型和条件类型来实现。
30.4万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
interface User {
    type: 'user';
    name: string;
    age: number;
}

interface Product {
    type: 'product';
    name: string;
    price: number;
}

type Data = User | Product;

function processData<T extends Data>(data: T): T extends User? string : string {
    if (data.type === 'user') {
        return `${data.name} is ${data.age} years old`;
    } else {
        return `${data.name} costs ${data.price}`;
    }
}