javascript - 如何在 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>
);
推荐阅读
- angular - Angular Material - Mat-table 不显示来自 REST API 的数据
- python - 如何在 python/kivy/pyjnius 检测 Android 中的屏幕分辨率?
- roblox - (仍然与roblox相关)倒计时停留在15并且玩家2在倒计时结束后加入时不会出现帧
- list - 取消 sap.m.List 的悬停功能?
- java - java.sql.SQLException:无法将值“2020-08-16 17:33:21.690”从第 18 列转换为 TIMESTAMP
- powershell - 优化递归修改网络共享文件ACL的脚本
- mule - 如何在单个 mule 流中将错误与 2 直到成功的组件区分开来?
- flutter - 颤振发布应用程序不显示缩略图
- scripting - Pine Script:strategy.entry 函数的唯一 ID
- c++ - c ++从char转换为字符串?