首页 > 解决方案 > 如何在 TypeScript 中正确键入“省略”函数以避免错误消息?

问题描述

export const omit = <T, U extends keyof T>(obj: T, keys: U[]): Exclude<T, U> =>
  Object.keys(obj).reduce(  
    (acc: any, curr: any) => (keys.includes(curr) ? acc : { ...acc, [curr]: obj[curr] }),
    {}
  );

收到一条错误消息说明TS7053: Element implicitly has an 'any' type because expression of type 'any' can't be used to index type 'unknown'.

并且希望没有错误消息和正确键入的函数。

标签: javascripttypescriptexpresstypeorm

解决方案


在我看来,您正在尝试返回一个对象,所以我相信您想要返回Omit<T, U>而不是Exclude<T, U>

你可以在这里看到区别

以下是避免错误的方法:

export const omit = <T, U extends keyof T>(obj: T, keys: U[]): Omit<T, U> =>
  (Object.keys(obj) as U[]).reduce(
    (acc, curr) => (keys.includes(curr) ? acc : { ...acc, [curr]: obj[curr] }),
    {} as Omit<T, U>
  );

推荐阅读