TS定义一个函数,函数的返回类型根据传入参数的类型决定

const addId = (data: Test[]): Test[] => {
  return data.map(item => {
    return { ...item, id: item.id || genID(30) };
  });
};

我希望这个Test的类型不是固定的,怎么做呢,但是不想用any

阅读 8.1k
1 个回答

比如这样?

function genID(n: number): number {
    return n;
}
function addId<T extends { id?: number; [key: string]: any}>(data: T[]): (T & {id: number})[] {
    return data.map(item => {
        return {
            ...item,
            id: item.id || genID(30)
        };
    });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进