MST

星途 面试题库

面试题:TypeScript函数在复杂场景中的类型定义

假设有一个函数`fetchData`,它接收一个URL字符串作为参数,并且可以接受一个可选的配置对象`config`,`config`对象中有一个`method`字段(取值为'GET' | 'POST' | 'PUT' | 'DELETE' 之一)和一个`headers`字段(类型为`{[key: string]: string}`),函数返回一个Promise对象,Promise的resolve值类型为`{ data: any }`,请完整定义这个函数。
20.4万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function fetchData(url: string, config?: { method: 'GET' | 'POST' | 'PUT' | 'DELETE'; headers: { [key: string]: string } }): Promise<{ data: any }> {
    return new Promise((resolve, reject) => {
        // 这里开始实际的网络请求逻辑,以fetch为例
        const defaultConfig = { method: 'GET', headers: {} };
        const mergedConfig = { ...defaultConfig, ...config };
        fetch(url, {
            method: mergedConfig.method,
            headers: mergedConfig.headers
        })
          .then(response => response.json())
          .then(data => resolve({ data }))
          .catch(error => reject(error));
    });
}