【发布时间】:2020-02-14 20:06:35
【问题描述】:
我有一个带有工作逻辑的过滤函数,但我不知道如何编写它的类型:
export function filter<T>(object: T, ...keys: Array<keyof T>): ??? {
let index = -1;
const length = keys.length;
const result = { ...object };
while (++index < length) {
const key = keys[index];
if (key in object) delete result[key];
}
return result;
}
filter({ a: 1, b: 2 }, 'b') // { a: 1 }
Typescript 仍然认为 'b' 属性存在,所以我正在寻找一种方法来指定将 keys 从 T 中删除。
我熟悉 Omit(但对 Typescript 来说通常很新),我认为它可以在这方面发挥作用,但我还没有想出办法让它和 Array 相遇...
有人看到我正在寻找的路径吗?
(顺便说一句,filter 的特定签名并不重要,如果您有更利于类型安全的替代实现,我很高兴听到它)
【问题讨论】:
标签: typescript generics types