删除泛型类型的属性

jWa*_*ng1 2 typescript

我有以下通用函数,我想用< T >替换任何函数

export const deleteFile = async (item: any, propName: string) => {
  const url = item[propName];
  await deleteFileByUrl(url);
  return omit<any>(item, propName);
};
Run Code Online (Sandbox Code Playgroud)

我很难定义一个具有 [propName]: string 属性的 T,然后返回一个没有该属性的类型 T。

spe*_*der 5

将解构与Omit类型相结合,您可以执行以下操作:

export const deleteProperty = <T, K extends keyof T>(obj: T, id: K): Omit<T, K> => {
    const { [id]: _, ...newState } = obj;
    return newState;
};
Run Code Online (Sandbox Code Playgroud)