如何在 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'.

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

杰罗姆·布

在我看来,您正试图返回一个对象,所以我相信您想返回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>
  );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Typescript中正确键入React ErrorBoundary类组件?

如何在Typescript中正确键入应用程序状态?

如何在TypeScript中正确键入用作映射的JavaScript对象

如何在TypeScript中表达正确键入的消息队列?

如何在 Typescript 中正确提取函数的泛型参数

如何在Typescript中正确导入模块?

如何在 Typescript 中键入此函数

如何在TypeScript中键入构造函数以及构造函数参数?

如何在TypeScript中的包装的addEventListener调用中正确键入事件处理程序

如何在TypeScript中正确键入Array.map回调?

如何在TypeScript 3+中正确键入通用元组剩余参数?

如何在 Typescript 中正确键入这样的数组属性迭代器?

如何在TypeScript中键入自动提示

如何在TypeScript中键入“ as” JSX属性?

如何在 TypeScript 中键入 check Date?

如何在TypeScript中键入普通对象

如何在 TypeScript 中正确获取 Mobx @observable 的值?

如何在Typescript 4.0.3中正确扩展Array原型?

如何在TypeScript中正确更改变量的类型?

如何在TypeScript中正确要求并声明节点库类型?

如何在TypeScript中正确导出和导入模块

如何在TypeScript中正确设计API模块?

如何在React与TypeScript中正确使用useState钩子?

如何在 Typescript 中正确创建 [Key: string]?

如何在TypeScript中正确等待承诺

如何在 TypeScript 类中正确声明计算属性名称?

如何在TypeScript中显式键入泛型函数?

如何在TypeScript中键入重载箭头函数的参数?

如何在Typescript-Transformer函数中正确转换'this'关键字?