MST

星途 面试题库

面试题:TypeScript 回调函数可选参数与泛型结合

实现一个通用的 `asyncOperation` 函数,它接受一个回调函数 `callback`。`callback` 的第一个参数 `result` 是一个泛型类型 `T`,第二个参数 `error` 是可选参数,类型为 `Error`。`asyncOperation` 函数模拟异步操作,根据条件决定是成功返回数据还是失败返回错误。请使用 TypeScript 编写该函数,并展示如何调用它处理不同类型的数据,如 `number` 数组和 `{name: string}` 对象。
30.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function asyncOperation<T>(callback: (result: T, error?: Error) => void) {
    // 模拟异步操作,这里简单随机决定成功或失败
    const isSuccess = Math.random() > 0.5;
    if (isSuccess) {
        const data: T = {} as T;
        callback(data);
    } else {
        const error = new Error('操作失败');
        callback(null as unknown as T, error);
    }
}

// 调用处理number数组
asyncOperation<number[]>((result, error) => {
    if (error) {
        console.error('处理number数组失败:', error.message);
    } else {
        console.log('处理number数组成功:', result);
    }
});

// 调用处理{name: string}对象
asyncOperation<{name: string}>((result, error) => {
    if (error) {
        console.error('处理{name: string}对象失败:', error.message);
    } else {
        console.log('处理{name: string}对象成功:', result);
    }
});