deno_std
deno_std copied to clipboard
bug(collection): Inconsistent behavior between `pick` and `omit`
Describe the bug
Found on https://github.com/denoland/std/pull/5926#discussion_r1751285539
The code below throws a runtime error on o.foo() but type errors.
import { pick } from "jsr:@std/collections/pick";
import { omit } from "jsr:@std/collections/omit";
class A {
constructor(public a: string, public b: string, public c: string) {}
foo(): string {
return "hello";
}
}
const obj = new A("a", "b", "c");
const p = pick(obj, ["a", "c", "foo"]);
const o = omit(obj, ["b"]);
console.log(obj.foo());
console.log(p.foo());
console.log(o.foo());
Closely related to https://github.com/denoland/std/issues/5927
Steps to Reproduce
Expected behavior
While the code doesn't throw type error, we should keep non listed methods in omit (o.foo() should be available.)
Environment
- OS: [e.g. Ubuntu 20.04, MacOS 11]
- deno version:
- std version: